【发布时间】:2012-10-10 07:30:02
【问题描述】:
我正在使用 pytz 将纪元时间戳转换为不同时区的日期。我想要做的是创建一个 DateTime 对象,它接受一个 Olson 数据库时区和一个纪元时间并返回一个本地化的 datetime 对象。最终,我需要回答诸如“纪元时间 1350663248 时在纽约几点钟?”
这里有些东西不能正常工作:
import datetime, pytz, time
class DateTime:
def __init__(self, timezone, epoch):
self.timezone = timezone
self.epoch = epoch
timezoneobject = pytz.timezone(timezone)
datetimeobject = datetime.datetime.fromtimestamp( self.epoch )
self.datetime = timezoneobject.localize(datetimeobject)
def hour(self):
return self.datetime.hour
if __name__=='__main__':
epoch = time.time()
dt = DateTime('America/Los_Angeles',epoch)
print dt.datetime.hour
dt = DateTime('America/New_York',epoch)
print dt.datetime.hour
这会打印相同的小时,而应该提前 3 小时左右。这里出了什么问题?我是一个 Python 初学者,感谢任何帮助!
【问题讨论】:
-
您在这里使用了错误的术语。纪元总是 1970 年 1 月 1 日,UTC 午夜。你所拥有的是一个 UNIX 时间戳,它是与纪元的偏移量。见en.wikipedia.org/wiki/Unix_epoch
-
只是一个变量名,你可以叫它
epoch_time对问题没有影响
标签: python datetime timezone epoch pytz