加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 16:46:34 所属栏目:安全 来源:网络整理
导读:我有dt = datetime(2013,9,1,11),我想获得这个datetime对象的Unix时间戳。 当我做dt – datetime(1970,1))。total_seconds()我得到了时间戳1378033200。 当使用datetime.fromtimestamp转换回来时,我得到datetime.datetime(2013,9,1,6,0)。 小时不匹配
我有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上都是一样)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读