Skip to main content
 首页 » 编程设计

python之Django 时区如何工作

2024年08月25日30yxwkf

所以,在我的设置中,我有以下内容:

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()是否从服务器获取信息?

请您参考如下方法:

  1. 是的,它从运行代码的机器获取信息。
  2. 不,它不会为您提供本地时间。不,它不使用您设置中的时区( doc ref , code ref )。它使用 UTC 时间(Europe/Copenhagen 是 UTC+2)。
  3. 如果你想获取本地日期时间对象,你应该让它变得简单:

    timezone.make_naive(timezone.now(), timezone.get_current_timezone())