【问题标题】:python: add timezone to time variable TUC to (UTC+2)python:将时区添加到时间变量 TUC 到 (UTC+2)
【发布时间】:2020-08-18 12:26:52
【问题描述】:

我正在使用 docker 进行部署。在我的代码中

timestamp = "{:_%Y_%m_%d_%H_%M_%S}".format(datetime.now())

当我打印所用容器的日期时,我发现它是 UTC。 请问有人知道如何修改此行代码以添加时区吗?

【问题讨论】:

标签: python timezone


【解决方案1】:

要立即获取 UTC,只需使用

from datetime import datetime, timezone
timestamp = "{:_%Y_%m_%d_%H_%M_%S}".format(datetime.now(tz=timezone.utc))

不需要外部库。

【讨论】:

    【解决方案2】:

    您正在生成没有任何时区信息的日期时间对象,因此假定为 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'
    

    【讨论】:

    • 感谢您的回复@Prem Anand :) 它很有帮助。我可以做到 "{:_%Y_%m_%d_%H_%M_%S}".format(datetime.now(tz=pytz.timezone('Europe/London')))不添加 %Z 没有 ?
    • 您需要%Z 来包含时区信息
    • 但是要得到这个结果 _2020_08_18_13_44_22 不需要 %Z 权限。 ?
    • 如果您不包含%Z,则显示时间的时区不会很明显。如果您对此感到满意,则无需包含%Z
    • @MrFuppes。谢谢.. 我已经使用 zoneinfo 更新了我对 python3.9 的答案
    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多