猿问

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

我遇到了这个问题,但经过一些研究后找到了解决方案。我在下面发布了我的答案以显示我的发现。如果有人有其他建议,请发布。


我需要将datetime.datime对象转换为 Unix 时间戳。我尝试使用 datetime.timestamp。我发现结果比我预期的晚了 1 小时。我能够使用以下内容复制此问题。


from datetime import datetime, timestamp

dt = 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 小时)。


我的解决方案可以在下面找到。如果您认为我的解释中遗漏了任何内容或有更好的解决方案,请发布您自己的答案。


喵喵时光机
浏览 349回答 3
3回答

千万里不及你

我最近遇到了同样的问题,我的情况是英国一位敌对者的部分 EDF 记录有一个小时的偏差,这被认为是由于英国夏令时。以下是我的情况的解决方案。from datetime import datetime as dt请用dt = dt.utcfromtimestamp(#YOUR_TIME_STAMP)代替dt = dt.fromtimestamp(#YOUR_TIME_STAMP)

守着一只汪

我认为您需要一个所谓的感知日期时间对象。Aware 意味着它现在是您的时差:datetime.fromtimestamp(timestamp, timezone(timedelta(hours=1)))用那行代码试试,timestamp你的 Unix 时间戳在哪里。
随时随地看视频慕课网APP

相关分类

Python
我要回答