python:将时区添加到时间变量TUC到UTC + 2

问题描述

我正在使用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))

不需要外部库。