問(wèn)題由來(lái) 時(shí)間戳轉(zhuǎn)換(時(shí)間戳:自 1970 年1月1日(00:00:00 )至當(dāng)前時(shí)間的總秒數(shù)。) #include <stdio.h> #include <time.h> int main(int argc, const char * argv[]) { time_t t; struct tm *p; t=1408413451; p=gmtime(&t); char s[80]; strftime(s, 80, "%Y-%m-%d %H:%M:%S", p); printf("%d: %s\n", (int)t, s); } 結(jié)果
可是利用命令在linux終端計(jì)算的結(jié)果不一
通過(guò)比較發(fā)現(xiàn),兩者正好差8個(gè)小時(shí),CST表示格林尼治時(shí)間,通過(guò)strftime()函數(shù)可以輸出時(shí)區(qū),改正如下 #include <stdio.h> #include <time.h> int main(int argc, const char * argv[]) { time_t t; struct tm *p; t=1408413451; p=gmtime(&t); char s[80]; strftime(s, 80, "%Y-%m-%d %H:%M:%S::%Z", p); printf("%d: %s\n", (int)t, s); } 結(jié)果
深究 GMT(Greenwich Mean Time)代表格林尼治標(biāo)準(zhǔn)時(shí)間。十七世紀(jì),格林威治皇家天文臺(tái)為了海上霸權(quán)的擴(kuò)張計(jì)畫(huà)而進(jìn)行天體觀測(cè)。1675年舊皇家觀測(cè)所正式成立,通過(guò)格林威治的子午線(xiàn)作為劃分地球東西兩半球的經(jīng)度零度。觀測(cè)所門(mén)口墻上有一個(gè)標(biāo)志24小時(shí)的時(shí)鐘,顯示當(dāng)下的時(shí)間,對(duì)全球而言,這里所設(shè)定的時(shí)間是世界時(shí)間參考點(diǎn),全球都以格林威治的時(shí)間作為標(biāo)準(zhǔn)來(lái)設(shè)定時(shí)間,這就是我們耳熟能詳?shù)摹父窳滞螛?biāo)準(zhǔn)時(shí)間」(Greenwich Mean Time,簡(jiǎn)稱(chēng)G.M.T.)的由來(lái)。 CST卻同時(shí)可以代表如下 4 個(gè)不同的時(shí)區(qū):
可見(jiàn),CST可以同時(shí)表示美國(guó),澳大利亞,中國(guó),古巴四個(gè)國(guó)家的標(biāo)準(zhǔn)時(shí)間。 好了兩者差8個(gè)小時(shí)(CST比GMT晚/大8個(gè)小時(shí)),GMT+8*3600=CST,代碼如下 #include <stdio.h> #include <time.h> int main(int argc, const char * argv[]) { time_t t; struct tm *p; t=1408413451; p=gmtime(&t); char s[80]; strftime(s, 80, "%Y-%m-%d %H:%M:%S::%Z", p); printf("%d: %s\n", (int)t, s); t=1408413451 + 28800; p=gmtime(&t); strftime(s, 80, "%Y-%m-%d %H:%M:%S", p); printf("%d: %s\n", (int)t, s); return 0; } 結(jié)果
linux平臺(tái)
|
|
來(lái)自: herowuking > 《VC》