Python - 特定时区的datetime
我在获取当前东部时间(EDT)时遇到了很大的困难。
print datetime.time(datetime.now()).strftime("%H%M%S")
datetime.now([tz]) 这个函数有一个可选的 tz 参数,但这个参数必须是 datetime.tzinfo 类型的... 我一直搞不清楚怎么为东部时区定义一个 tzinfo 对象... 看起来应该很简单,但我无法在不导入额外库的情况下搞定。
2 个回答
8
tzinfo
类只是定义了一个接口,也就是说它只是告诉你应该怎么做,但具体的实现需要你自己来完成(可以查看文档里的例子)。另外,你也可以使用一个第三方模块来实现这个功能,比如说pytz
。
编辑: 抱歉,我之前没注意到你不想导入其他库。
20
我对东部时间区(EDT)不是很熟悉,但这个例子应该能帮到你。
import datetime
要使用datetime.datetime.now,你需要传入一个时区信息,这个信息的类型应该是datetime.tzinfo。这里有一个类实现了这个功能,并包含了一些必要的函数。这里我没有提供夏令时的细节,因为这只是一个示例。
class EST(datetime.tzinfo):
def utcoffset(self, dt):
return datetime.timedelta(hours=-5)
def dst(self, dt):
return datetime.timedelta(0)
现在你可以用这个来获取正确的时区信息:
print datetime.datetime.now(EST())
输出:
2010-11-01 13:44:20.231259-05:00