我想使用time_t current_time = time(NULL)
在C中獲取當前時間。據我所知,它會返回我係統的當前時間。 我稍後嘗試使用struct tm* gmt = gmtime(¤t_time)
將其轉換爲GMT時間。時間(NULL)返回不同的時間
我使用ctime()
和asctime()
函數打印兩次。
我係統上的當前時間是GMT + 1。但是gmtime()
會返回我與current_time
相同的時間。我不明白爲什麼gmtime()
同時返回我。任何幫助將不勝感激。
確定這裏是代碼和輸出:當前窗口顯示的時間是17:54(斯德哥爾摩區; GMT + 1)。我想讓我回到15:54。或者,也許我的理解是錯誤的...
time_t current_time = time(NULL);
struct tm* gmt = gmtime(¤t_time);
struct tm* loc = localtime(¤t_time);
printf("current time: %s\n", ctime(¤t_time));
printf("gmt time %s\n", asctime(gmt));
printf("local time %s\n", asctime(loc));
輸出:
current time: Mon Oct 8 17:54:06 2012
gmt time Mon Oct 8 17:54:06 2012
local time Mon Oct 8 17:54:06 2012
接受的解決方案:從西門斯
這可能是你的問題。檢查你的TZ環境變量的值;如果不存在,它將默認爲GMT。 Cygwin不會從Windows自動獲取時區設置。另請參見localtime returns GMT for windows programs running on cygwin shells
也許系統上的時區配置不正確? – twalberg
嘗試本地時間功能。 –
我檢查了我的系統和GMT + 1的時區(那是什麼窗口說的)。 – ata