我在理解 python 中的时间转换时遇到了一些麻烦。我有两个相同的time_struct对象
In [22]: local_dt
Out[22]: datetime.datetime(2000, 1, 1, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
In [23]: local_dt.timetuple()
Out[24]: time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=0)
当我将它提供给time.mktime一台机器上的功能时
time.mktime(local_dt.timetuple())
它返回 946681200.0
在第二台机器上,我得到了不同的答案
In [31]: local_dt.timetuple()
Out[31]: time.struct_time(tm_year=2000, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=1, tm_isdst=0)
In [32]: time.mktime(local_dt.timetuple())
Out[32]: 946684800.0
不过,这些机器有不同的时区:
In [44]: time.tzname
Out[44]: ('Europe', 'Europe')
In [45]: time.tzname
Out[45]: ('CET', 'CEST')
关于时间模块的文档说:
使用以下函数在时间表示之间进行转换: struct_time 本地时间自纪元以来的秒数 mktime()
据我所知,我的当地时间是“美国/洛杉矶”,所以自纪元以来的秒数应该完全相同,而不取决于系统配置。
我有什么误解?那么我该如何正确计算时间戳呢?
哈士奇WWW
相关分类