用pytz将时代定位在Python中



IM正在用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的初学者,任何帮助都将不胜感激!

datetime.fromtimestamp(self.epoch)返回不应与任意timezone.localize()一起使用的本地时间;您需要utcfromtimestamp()才能在UTC中获取DateTime,然后将其转换为所需的时区:

from datetime import datetime
import pytz
# get time in UTC
utc_dt = datetime.utcfromtimestamp(posix_timestamp).replace(tzinfo=pytz.utc)
# convert it to tz
tz = pytz.timezone('America/New_York')
dt = utc_dt.astimezone(tz)
# print it
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))

或更简单的替代方法是直接从时间戳构造:

from datetime import datetime
import pytz
# get time in tz
tz = pytz.timezone('America/New_York')
dt = datetime.fromtimestamp(posix_timestamp, tz)
# print it
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))

在这种情况下,它隐含地从UTC转换。

用于创建 datetime 从unix时间戳属于特定时区的对象,您可以将 pytz 象作为 tz parameter将创建您的datetime。例如:

>>> from datetime import datetime
>>> import pytz
>>> datetime.fromtimestamp(1350663248, tz= pytz.timezone('America/New_York'))
datetime.datetime(2012, 10, 19, 12, 14, 8, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)

您可以使用 pytz.all_timezones 返回可以使用的时区名称的详尽列表。。

还要查看TZ数据库时区Wiki的列表。

epochdt = datetime.datetime.fromtimestamp(epoch)
timezone1 = timezone("Timezone/String")
adjusted_datetime = timezone1.localize(epochdt)

从内存工作,请原谅任何语法错误,但这应该使您走上正确的轨道。

编辑:错过了了解时间等的部分。Python的时间/日期格式很好。在几乎该链接的底部是表格显示如何从DateTime对象中汲取不同属性的表。

相关内容

  • 没有找到相关文章

最新更新