将datetime转换为Unix时间戳并将其转换回python

前端之家收集整理的这篇文章主要介绍了将datetime转换为Unix时间戳并将其转换回python前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有dt = datetime(2013,9,1,11),我想获得这个datetime对象的Unix时间戳。

当我做dt – datetime(1970,1))。total_seconds()我得到了时间戳1378033200。

当使用datetime.fromtimestamp转换回来时,我得到datetime.datetime(2013,9,1,6,0)。

小时不匹配。我在这里错过了什么?

你在这里错过的是时区。

大概你有五个小时关闭UTC,所以2013-09-01T11:00:00本地和2013-09-01T06:00:00Z是同一时间。

你需要阅读datetime文档的顶部,它解释了关于时区和“天真”和“意识”对象。

如果你原来的天真datetime是UTC,恢复它的方式是使用utcfromtimestamp而不是fromtimestamp。

另一方面,如果你原来的天真datetime是本地的,你不应该从它减去一个UTC时间戳在第一名;请改用datetime.fromtimestamp(0)。

或者,如果你有一个知道的datetime对象,你需要使用两边的本地(感知)时代,或显式转换和从UTC。

如果你有,或者可以升级到Python 3.3或更高版本,你可以通过使用timestamp方法避免所有这些问题,而不是试图找出如何自己做。即使你不这样做,你也可以考虑borrowing its source code

(如果你可以等待Python 3.4,它看起来像PEP 341可能会使它成为最终版本,这意味着所有的东西JF塞巴斯蒂安和我在评论中谈论应该是可行的只有stdlib,和工作在Unix和Windows上都是一样)。

猜你在找的Bash相关文章