【问题标题】:Django incorrect naive timezone from system?来自系统的Django不正确的天真时区?
【发布时间】:2014-09-11 16:03:44
【问题描述】:

我正在尝试在 Intranet 系统中使用时间,该系统将在不同的时区运行独立的服务器/系统。因为时区很痛苦,而且我对时间的使用相当简单(例如,向用户显示他们上次修改文件的时间),所以我想我会使用幼稚的时间。然而,Django 提出的幼稚时区是不正确的。

Settings.py:

# No TIME_ZONE specified because I want it to use whatever the system time is
USE_L10N = False
USE_TZ = False

从 Django 控制台,我运行 os.getenv('TZ') 并返回 'America/Chicago',尽管计算机设置为 America/New_York。 (如果我在命令行中调用 date,则表明我在 EDT。)因此,当我调用 timezone.now()datetime.datetime.now() 时,结果会提前一个小时。 (当我在其中任何一个上调用 timezone.is_aware() 时,它确实返回 False。)

我的问题:为什么这个时区相对于系统时间不正确,有什么办法可以解决吗?

【问题讨论】:

    标签: django datetime timezone django-timezone


    【解决方案1】:

    看看这是否有效:

    from django.utils import timezone
    timezone.localtime(timezone.now())
    

    这是来自Django docs

    【讨论】:

    • 这会根据设置中的TIME_ZONE 设置时区。我的目标是避免每次使用都必须手动更改。如果我尝试在没有设置TIME_ZONE 的情况下使用它,它会再次默认为America/Chicago
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2011-09-28
    • 2016-01-21
    相关资源
    最近更新 更多