2010-11-01 169 views
11

我正在尝试获取EDT时区中的当前时间。Python - 特定时区的日期时间

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

datetime.now([TZ])有一个可选的TZ说法,但它必须是类型datetime.tzinfo的......我还没有本能够找出如何定义一个tzinfo对象为东时区...似乎它应该很简单,但我不能导出一个额外的图书馆。

回答

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 
+0

感谢 - 令人沮丧的是你必须创建一个整体类来指定一个时区(vs只是传递一个简单的变量) – wuntee 2010-11-01 18:58:32

+0

@wuntee:那不是真的。这是为了解释。 adw的答案包含可用于传递tzinfo信息的库 - pytz。事实上,这将是重用和dst等方面已由pytz模块提供。 – pyfunc 2010-11-01 19:05:33

8

tzinfo类只定义了一个接口,您将需要实现(请参阅文档中的示例)或使用实现它的第三方模块,如pytz

编辑:对不起,我错过了你不想导入另一个库。

+0

+1提供pytz模块,因为我专注于解释tzinfo。 – pyfunc 2010-11-01 19:07:01

相关问题