【问题标题】:Python: Get aware datetime string from aware datetimePython:从感知日期时间获取感知日期时间字符串
【发布时间】:2017-09-05 21:49:27
【问题描述】:

我有一个可识别的日期时间对象并希望返回一个可识别的日期时间字符串。但是当我这样做时

obj.strftime("%e %b %Y %H:%M:%S")

它返回一个基于 UTC 的字符串(即使 TIME_ZONE-setting 设置正确)。

如何获得本地化的日期时间字符串?

编辑:我希望应用 django 的时区

【问题讨论】:

标签: python django datetime


【解决方案1】:

我不得不使用localtime(obj):

localtime(obj).strftime("%e %b %Y %H:%M:%S")

工作正常。

【讨论】:

    【解决方案2】:

    您可以在项目中使用模块 dateformat,它允许从您的设置中获取时区:

    from django.utils import dateformat
    
    timezoned_date = dateformat.DateFormat(obj).format('jS F Y H:i:s')
    

    编辑:

    这适用于不知道的 datetime 对象,最好使用带有感知日期的 django.utils.timezone.localtime

    【讨论】:

    • 仍然返回 UTC 而不是声明的时区
    • 你是如何测试它的?我通过生成 datetime.now() 进行了尝试,并且根据不同的时区输出很好。
    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多