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