以下函式摘自tcpdump原始碼,用於計算時區
對上述其他好理解,下面這段比較費解
dir = loc->tm_year - gmt->tm_year;
if (dir == 0)
dir = loc->tm_yday - gmt->tm_yday;
dt += dir * 24 * 60 * 60;
分析如下:
時區最多是相差24個小時,也就是一天,而且本地時間一定會》=gmt時間(反正不是》=就是<=,先按》=解釋)
假設gmt時間為 1998.12.31.23:00
local時間為 1999.1.1.1:00
這段**
dir = loc->tm_year - gmt->tm_year;
if (dir == 0)
dir = loc->tm_yday - gmt->tm_yday;
dt += dir * 24 * 60 * 60;
表示,如果dir = loc->tm_year - gmt->tm_year;差一年,則說明兩個時間的天一定是不一樣的,如果從local時間中借位一天,即
local時間變為1998.12.31.(1:00+24:00)=1998.12.31.25:00
則兩個時間減下就能算出時區
如果年一樣的話dir = loc->tm_yday - gmt->tm_yday;表示天的差異,這是dir不是0就是1,是0的話直接算出時區,是1的話相當於從天這借位,換算成小時和分鐘,同樣可以算出時區
如果說為什麼沒有加上loc->tm_sec- gmt->tm_sec,我想時區一般是1個時區,半個時區算的,秒算上沒有多大意義。
MySQL時間 日期 時區函式和計算函式
1.獲得當前日期 時間 date time 函式 now 或sysdate sysdate 日期時間函式跟 now 類似,不同之處在於 now 在執行開始時值就得到了,sysdate 在函式執行時動態得到值,不太常用。2.獲取當前日期current date 3.獲取當前時分秒 current ti...
PTA 計算分段函式 2
本題目要求計算下列分段函式f x 的值 注 可在標頭檔案中包含math.h,並呼叫sqrt函式求平方根,呼叫pow函式求冪。輸入在一行中給出實數x。在一行中按 f x result 的格式輸出,其中x與result都保留兩位小數。10f 10.00 3.16 0.5f 0.50 2.75 inclu...
第2章 2 計算分段函式 1 10分
第2章 2 計算分段函式 1 10分 本題目要求計算下列分段函式f x 的值 公式輸入格式 輸入在一行中給出實數x。輸出格式 在一行中按 f x result 的格式輸出,其中x與result都保留一位小數。輸入樣例1 10輸出樣例1 f 10.0 0.1 輸入樣例2 0輸出樣例2 f 0.0 0....