当我尝试使用datetime
模块
In [31]: datetime.now()
Out[31]: datetime.datetime(2018, 6, 6, 8, 59, 35, 49991)
In [32]: str(datetime.now())
Out[32]: '2018-06-06 08:59:45.633486'
我打算改为当地时间,但在数十个时区模块和第三方软件包中丢失了作为pytz。
如何以直接的方式在时区之间进行更改?
答案 0 :(得分:3)
内置的datetime
模块为您提供了处理时区的基本类和数据结构,但它不包含实际的时区数据。这是因为这些数据偶尔会更新和修改,你不希望硬编码到Python发行版中。这就是pytz
模块的来源,可以单独安装和保持最新。
在实践中,您主要处理datetime.datetime
和pytz.timezone
:
from datetime import datetime
import pytz
datetime.now(pytz.timezone('Asia/Tokyo'))
如果您只使用UTC,这是Python内置的唯一时区:
from datetime import datetime, timezone
datetime.now(timezone.utc)
您应该仔细阅读pytz使用说明何时使用datetime.astimezone
,localize
以及何时将时区作为参数传递给datetime
函数:http://pytz.sourceforge.net/#example-usage。