我需要打印不同时区的时间

python 的 datetime 模块提供了以下方法打印本地时间和 UTC 时间:

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2017, 11, 9, 8, 50, 18, 23707)
>>> datetime.utcnow()
datetime.datetime(2017, 11, 9, 0, 50, 25, 933038)

now() 方法默认以当前主机时区打印时间,可以使用 astimezone() 指定时区。

一种方式

>>> from datetime import datetime, timezone, timedelta
>>> print(datetime.now().astimezone(timezone(timedelta(hours=8))))
2017-11-09 08:52:19.088742+08:00

另一种方式

>>> from datetime import datetime, timezone, timedelta
>>> utc_8 = timedelta(hours=8)
>>> tz = timezone(utc_8)
>>> dt = datetime.now()
>>> dt.astimezone(tz)
datetime.datetime(2017, 11, 9, 8, 46, 16, 292018, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
>>> print(dt.astimezone(tz))
2017-11-09 08:46:16.292018+08:00