1. 用linux shell 計算兩個時間差
start=`date +%s -d "2011-11-28 15:55:37"`
end=`date +%s -d "2011-11-28 15:55:52"`
echo $(($end-$start))
這個前提是你能拿到開始和結束時間字串的基首手礎余芹握上的。
如果你的日誌文件輸出格式是上述的話,還有個方法:
cat 日誌文件 | awk '/^000/{
start=$2 " " $3
end=$4 " " $5
stm=mktime(gensub(/[:-]/, " ", "g", start))
etm=mktime(gensub(/[:-]/, " "豎慶, "g", end))
print $1 " - " etm-stm
}'
2. 【c/c++】linux時間獲取與時間轉換函數總結
在編程中,處理時間戳和模塊耗時是常見的需求,本文將對相關時間函數及其應用場景進行梳理。
獲取時間:clock, time, gettimeofday, C++11引入的chrono庫函數
時間格式轉換:ctime, localtime, gmtime, asctime, mktime,以及strftime
計算時間差:difftime
線程安全轉換:ctime_r, localtime_r, asctime_r, gmtime_r
例如,通過chrono::system_clock::now()獲取高精度時間點。
ctime可將時間戳轉化為可讀格式,如ctime(&time_buffer);strftime用於格式化輸出,如strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &time_val)。
通過difftime計算兩個時間點的差值,如double diff = difftime(end_time, start_time)。
如ctime_r通過指定的buffer和r指向的存儲區域,保證了線程間的獨立性,如ctime_r(&time_buffer, &r)。