将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上都是一样)。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...