Python - 特定时区的datetime

11 投票
2 回答
17362 浏览
提问于 2025-04-16 06:24

我在获取当前东部时间(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 

撰写回答