问题描述
我正在使用 pytz 将纪元时间戳转换为不同时区的日期.我想要做的是创建一个 DateTime 对象,它接受一个 Olson 数据库时区和一个纪元时间并返回一个本地化的 datetime 对象.最终,我需要回答诸如纪元时间 1350663248 时在纽约几点钟?"
Im working on converting epoch timestamps to dates in different timezones with pytz. What I am trying to do is create a DateTime object that accepts an Olson database timezone and an epoch time and returns a localized datetime object. Eventually I need to answer questions like "What hour was it in New York at epoch time 1350663248?"
这里有些东西不能正常工作:
Something is not working correctly here:
这会打印相同的小时,而应该提前 3 小时左右.这里出了什么问题?我是一个 Python 初学者,感谢任何帮助!
This prints the same hour, whereas one should be 3 or so hours ahead. Whats going wrong here? I'm a total Python beginner, any help is appreciated!
推荐答案
datetime.fromtimestamp(self.epoch)
返回不应与任意 timezone.localize() 一起使用的本地时间;您需要 utcfromtimestamp()
以 UTC 获取日期时间,然后将其转换为所需的时区:
datetime.fromtimestamp(self.epoch)
returns localtime that shouldn't be used with an arbitrary timezone.localize(); you need utcfromtimestamp()
to get datetime in UTC and then convert it to a desired timezone:
或者更简单的替代方法是直接从时间戳构造:
Or a simpler alternative is to construct from the timestamp directly:
在这种情况下,它隐式地从 UTC 转换.
It converts from UTC implicitly in this case.
这篇关于在 Python 中使用 pytz 本地化纪元时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!