Python - 指定时区的日期时间

11

我很难以获取当前EDT时区时间。

print datetime.time(datetime.now()).strftime("%H%M%S")

datetime.now([tz])函数有一个可选的tz参数,但它必须是datetime.tzinfo类型...我一直没能想出如何为东部时区定义一个tzinfo对象...看起来应该很简单,但我无法在不导入额外库的情况下解决它。

2个回答

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 

谢谢 - 很令人沮丧,你必须创建一个完整的类来指定时区(而不是只传递一个简单的变量)。 - wuntee
@wuntee:这不是真的。这是作为解释而意味着的。adw的答案包含了库-pytz,可以用来传递tzinfo信息。事实上,这将是重复使用的,像dst等方面已经由pytz模块提供。 - pyfunc

8
tzinfo类仅定义了一个接口,您需要自己实现它(请参阅文档中的示例)或使用第三方模块来实现它,例如pytz编辑:抱歉,我错过了您不想导入其他库的要求。

非常感谢提供pytz模块,因为我专注于解释tzinfo。 - pyfunc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接