t='20180515102500'
d=datetime.strptime(t, "%Y%m%d%H%M%S")
millis_since_epoch = int(time.mktime(d.timetuple())) * 1000
print(millis_since_epoch)
给我:1526379900000更换(python 3.6.1)
和
在我的本地:1526397900000(python 2.7.14)
为什么?
将datetime对象转换为epoch的推荐方法是什么?在
Tags:
试试这个:
如果有帮助,请告诉我!在
在python 3.6中:
例如:
^{pr2}$您的问题是您使用的是
datetime
(和struct_tm
等)对象。所以你要问的是2018年5月15日10:25:00“不管这台机器上的本地时区是什么”中的“Unix纪元”有多远。如果你在两台时区相隔5小时的机器上运行它,你会得到相隔5*3600*1000毫秒的结果。在建议的方法是:
…或:
^{pr2}$(很明显,如何将这些值转换为浮点数,或者您需要的任何其他值。)
但这两种方法在这里都没有任何区别,因为您仍然使用天真的datetime对象。(至少您没有混入
time
模块中的其他类型并放弃精度,但您没有解决您的问题。)问题的解决取决于你想做什么。这些是UTC时间戳吗?它们是在某个已知时区的时间戳吗?在
如果一切都是UTC,最好的做法是显式地创建UTC对象,但最简单的事情(尤其是需要在2.7中运行代码的情况下)是:
这将给您一个表示自纪元起0 UTC秒的原始日期时间,并从表示纪元以来X UTC秒的原始日期时间中减去它,这样您就得到了一个表示X秒的
timedelta
,而不管系统使用的是哪个时区。在或者,对现有代码的最小更改是使用},这将以更复杂的方式执行相同的操作。在
utctimetuple
而不是{相关问题 更多 >
编程相关推荐