为了账号安全,请及时绑定邮箱和手机立即绑定

datetime.timestamp() 丢失时间(一小时)

datetime.timestamp() 丢失时间(一小时)

喵喵时光机 2021-06-11 15:09:25
我遇到了这个问题,但经过一些研究后找到了解决方案。我在下面发布了我的答案以显示我的发现。如果有人有其他建议,请发布。我需要将datetime.datime对象转换为 Unix 时间戳。我尝试使用 datetime.timestamp。我发现结果比我预期的晚了 1 小时。我能够使用以下内容复制此问题。from datetime import datetime, timestampdt = datetime.utcfromtimestamp(1438956602.0)dt 现在等于 datetime.datetime(2015, 8, 7, 14, 10, 2)然后:dt_stamp = datetime.timestamp(dt)这给出了dt_stamp = 1438953002.0(与我们原来的时间戳不同)。如果我们将其转换回日期时间datetime.utcfromtimestamp(dt_stamp)我们得到:datetime.datetime(2015, 8, 7, 13, 10, 2)这比我们原来的时间早了一个小时。对于上下文,我使用的是 Python 3 并且位于英国,我们目前使用的是英国夏令时(UTC 时间提前 1 小时)。我的解决方案可以在下面找到。如果您认为我的解释中遗漏了任何内容或有更好的解决方案,请发布您自己的答案。
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

我最近遇到了同样的问题,我的情况是英国一位敌对者的部分 EDF 记录有一个小时的偏差,这被认为是由于英国夏令时。
以下是我的情况的解决方案。

from datetime import datetime as dt

请用

dt = dt.utcfromtimestamp(#YOUR_TIME_STAMP)

代替

dt = dt.fromtimestamp(#YOUR_TIME_STAMP)


查看完整回答
反对 回复 2021-06-16
?
守着一只汪

TA贡献1872条经验 获得超3个赞

我认为您需要一个所谓的感知日期时间对象。Aware 意味着它现在是您的时差:

datetime.fromtimestamp(timestamp, timezone(timedelta(hours=1)))

用那行代码试试,timestamp你的 Unix 时间戳在哪里。


查看完整回答
反对 回复 2021-06-16
  • 3 回答
  • 0 关注
  • 348 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号