0
我有以下一段代碼來查找UTC和本地時區之間的區別。C++ - 時區轉換
struct tm *local_time, *gmt_time;
time_t t = time(NULL);
local_time = localtime(&t);
gmt_time = gmtime(&t);
int y = mktime(local_time);
int x = mktime(gmt_time);
tzone_diff = y - x;
這是行不通的。但是,如果我將語句gmt_time = gmtime(& t)移到int y = mktime(local_time)以下;有用。這是下面的一段代碼作品:
struct tm *local_time, *gmt_time;
time_t t = time(NULL);
local_time = localtime(&t);
int y = mktime(local_time);
gmt_time = gmtime(&t);
int x = mktime(gmt_time);
tzone_diff = y - x;
這似乎對我很奇怪..任何線索?
temp的位置可能相同。但gmtime()和localtime()應該以他們自己的方式修改「temp」嗎?我發現只有第一次調用gmtime()或localtime())才能修改結構。 – Prabhu 2011-03-02 11:06:23
由於gmtime和localtime返回指向同一結構體的指針,因此兩個指針local_time和gmt_time將指向相同的數據。當你調用gmtime時,由local_time指向的數據被更新,並且你留下了兩個指向同一個struct tm的指針,這會給你一個0的時區差異。 – Erik 2011-03-02 11:09:50