計算時區函式gmt2local time t t

2021-05-22 03:13:52 字數 830 閱讀 8681

以下函式摘自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....