我正在尝试将Unix时区时间从本地(东部时间,UTC -4)转换为UTC,并在UTC中产生新的Unix时间戳。当我将本地时间戳转换为时间结构,然后将其转换为UTC时,转换就很好了。但是,当我从生成的时间结构生成Unix时间戳时,该时间戳给出的时间比正确的UTC值早一小时。这里可能出什么问题了?
local_tstamp = 1533957121
print(time.localtime(local_tstamp))
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=10, tm_hour=23, tm_min=12, tm_sec=1, tm_wday=4, tm_yday=222, tm_isdst=1)
gmt_time = time.gmtime(local_tstamp)
print(gmt_time)
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=3, tm_min=12, tm_sec=1, tm_wday=5, tm_yday=223, tm_isdst=0)
gmt_tstmp = int(time.mktime(gmt_time))
print(time.localtime(gmt_tstmp))
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=4, tm_min=12, tm_sec=1, tm_wday=5, tm_yday=223, tm_isdst=1)
答案 0 :(得分:1)
time.mktime(t)
花费的时间是 local ,而不是GMT。由于您传入的值的值为dt = 0,但本地时间实际上为dst
,因此您提前一小时得到了一个值:
来自docs:
time.mktime(t)
这是localtime()的反函数。它的参数是struct_time或完整的9元组(因为需要dst标志;如果未知,请使用-1作为dst标志),它以 local 时间而不是UTC表示时间。>