unix時間戳time t與UTC時區的關係

2021-09-06 22:39:10 字數 973 閱讀 7714

一般我用c寫unix時間戳是這樣子的

#include#include

void printfdatetimestr(struct tm *stm);

printf(

"timestr=%04d-%02d-%02d %02d:%02d:%02d 星期%s\n

",stm->tm_year+1900,stm->tm_mon+1,stm->tm_mday,stm->tm_hour,stm->tm_min,stm->tm_sec,weekday[stm->tm_wday]);

}int

main()

執行結果:

unix_timestamp 現在的時間戳是=1429787951

local time is :asctime=thu apr 23 19:19:11 2015

格林威治gmt time is :gmtime=thu apr 23 11:19:11 2015

timestr=2015-04-23 11:19:11 星期四 dst[0]

****************************************

input your unix_timestamp:0

你的 unix_timestamp 時間戳是=0

你的 local time is :asctime=thu jan 01 08:00:00 1970

你的 格林威治gmt time is :gmtime=thu jan 01 00:00:00 1970

timestr=1970-01-01 00:00:00 星期四 dst[0]

time_t =0 的時候 其實是 1970-01-01 00:00:00 到utc 0時區的秒數,而不是 我們北京時間utc+8;所以gmtime比localtime 小8小時。

在大多數的unix系統中unix時間戳儲存為32位,這樣會引發2023年問題或y2038。

早晚替換為64位。

Unix時間戳與C DateTime時間型別互換

本文 http www.cnblogs.com weird archive 2008 08 15 1068137.html unix時間戳最小單位是秒,開始時間為格林威治標準時間1970 01 01 00 00 00 convertintdatetime方法的基本思路是通過獲取本地時區表示unixk...

UNIX 時間戳總結

2038年問題又叫unix千年臭蟲或y2k38錯誤。在時間值以帶符號的32位整數來儲存或計算的資料儲存情況下,這個錯誤就有可能引發問題。可以用unix帶符號的32位整數時間格式來表示的最大時間是 2038年1月19日03 14 07utc 2038 01 19t03 14 07z 這是自 1970 ...

Oracle時間與Unix時間戳的轉換

關鍵字 oracle data unix unix時間戳記是從 1970 01 01 00 00 00 gmt開始的秒數,表現為整數型。oracle中的時間是date型,以下函式提供了兩種時間轉換的oracle函式 1 從unix時間戳記轉換為oracle時間 create or replace f...