首先,不要包含time.strftime('%Z')
您的格式。您要告诉它当前的GMT偏移量(包括夏令时关闭),并且[可能]使用它来设置tm_isdst。
没有这个,你应该得到一个结构体tm_isdst=-1
:
>>> time1 = time.strptime("2012-06-01 12:00:00", "%Y-%m-%d %H:%M:%s")
>>> time1
time.struct_time(tm_year=2012, tm_mon=6, tm_mday=1, tm_hour=12, tm_min=0,
tm_sec=0, tm_wday=4, tm_yday=153, tm_isdst=-1)
现在,您可以将其传递给mktime,它将根据给定的-1
值“猜测” DST值(我将“ guess”用引号引起来,因为除了模棱两可的2AM情况之外,它总是正确的)。这将以time()
格式给出绝对时间。
>>> time.mktime([prevIoUs value]) # my timezone is US Eastern
1338566400.0
然后,您可以使用此值调用localtime,它将具有正确设置的DST标志:
>>> time.localtime(1338566400).tm_isdst
1
您也可以跳过strptime步骤,并将值直接传递给mktime:
>>> time.mktime((2012,6,1,12,0,0,-1,-1,-1))
1338566400.0