当我做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上都是一样)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。