我当地的时区是EDT。我有一个时间戳:2003年8月29日04:18:52,我使用mktime()转换为time_t值,tm_isdst设置为-1。 time_t值是1062145132.当我用这个值运行gmtime()时,我得到2003年8月29日09:18:52。看看从gmtime()返回的struct tm,tm_isdst的值是1.为什么这次不是08:18:52而不是?是不是gmtime应该等同于UTC,没有任何夏令时依赖?
我使用了bash如下:
date --date=@1062145132
Fri Aug 29 04:18:52 EDT 2003
TZ=UTC date --date=@1062145132
Fri Aug 29 08:18:52 UTC 2003
以上显示了EDT和UTC之间预期的4小时差异。为什么gmtime()没有显示出相同的差异?
答案 0 :(得分:0)
我发现了我的问题。在调用gmtime(& tmgmt)和asctime(& tmgmt)的输出之间,我调用了mktime(& tmgmt)。我没有意识到mktime可能会改变结构中的值,因此我打印出的值不是从gmtime()返回的值。