问题描述
我正在使用docker进行部署。在我的代码中
timestamp = "{:_%Y_%m_%d_%H_%M_%s}".format(datetime.Now())
当我打印所用容器的日期时,我发现它位于UTC。 有谁知道如何修改此行代码以添加时区?
解决方法
您正在生成没有任何时区信息的datetime对象,因此被假定为UTC格式
您需要将所需的时区传递给datetime.now()
调用,并调整格式字符串以包括时区信息
Python> = 3.9
从python 3.9开始,您内置了对zoneinfo.ZoneInfo
类的时区的支持
>>> from zoneinfo import ZoneInfo
>>> tz = ZoneInfo("Europe/London")
>>> timestamp = "{:_%Y_%m_%d_%H_%M_%S %Z}".format(datetime.now(tz))
>>> timestamp
'_2020_08_19_15_26_25 BST'
Python
安装pytz(pip install pytz
)以获得时区支持
>>> import pytz
>>> tz = pytz.timezone('Europe/London')
>>> timestamp = "{:_%Y_%m_%d_%H_%M_%S %Z}".format(datetime.now(tz))
>>> timestamp
'_2020_08_18_13_44_22 BST'
,
要立即获取UTC,只需使用
from datetime import datetime,timezone
timestamp = "{:_%Y_%m_%d_%H_%M_%S}".format(datetime.now(tz=timezone.utc))
不需要外部库。