Django 时区如何工作?
How does Django Timezone Work?
因此,在我的设置中,我有以下内容:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
TIME_ZONE = 'Europe/Copenhagen'
然而,当我发出:
timezone.now()
datetime.datetime(2015, 9, 26, 8, 47, 15, 862729, tzinfo=<UTC>)
而且时间晚了两个小时。
我正在阅读文档,我可以看到此方法调用 datetime.datetime() 并且那里的信息是正确的。我可以看到输出基于变量 TIME_ZONE,该变量设置为我的当前位置。 timezone.now() 不应该得到正确的 TIME_ZONE 时间吗?
另一个问题:datetime.datetime()是否从服务器获取信息?
时区感知日期时间的重要之处不在于它们恰好存储在哪个时区,而是它们代表单个时间点这一事实。如果这是真的,那么在任何你想要的时区显示日期时间都是微不足道的(嗯,可能,无论如何)。
所以 Django 的工作方式是所有已知的日期时间都存储在 UTC 中。 (即便如此,它们可能会或不会以 UTC 格式从数据库中返回,具体取决于数据库设置。)然后它为您提供工具(例如 TIME_ZONE
设置和 activate()
)来设置应该的时区在为用户显示呈现模板时使用。
所以你描述的一切都是设计使然。它真的给你带来了问题吗?
因此,在我的设置中,我有以下内容:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
USE_L10N = True
USE_TZ = True
TIME_ZONE = 'Europe/Copenhagen'
然而,当我发出:
timezone.now()
datetime.datetime(2015, 9, 26, 8, 47, 15, 862729, tzinfo=<UTC>)
而且时间晚了两个小时。
我正在阅读文档,我可以看到此方法调用 datetime.datetime() 并且那里的信息是正确的。我可以看到输出基于变量 TIME_ZONE,该变量设置为我的当前位置。 timezone.now() 不应该得到正确的 TIME_ZONE 时间吗?
另一个问题:datetime.datetime()是否从服务器获取信息?
时区感知日期时间的重要之处不在于它们恰好存储在哪个时区,而是它们代表单个时间点这一事实。如果这是真的,那么在任何你想要的时区显示日期时间都是微不足道的(嗯,可能,无论如何)。
所以 Django 的工作方式是所有已知的日期时间都存储在 UTC 中。 (即便如此,它们可能会或不会以 UTC 格式从数据库中返回,具体取决于数据库设置。)然后它为您提供工具(例如 TIME_ZONE
设置和 activate()
)来设置应该的时区在为用户显示呈现模板时使用。
所以你描述的一切都是设计使然。它真的给你带来了问题吗?