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

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

最佳答案

  • 是的,它从运行代码的机器获取信息。
  • 不,它不会给你本地时间。不,它不使用您设置中的时区( doc refcode ref )。它使用 UTC 时间(Europe/Copenhagen 是 UTC+2)。
  • 如果你想获取本地日期时间对象,你应该让它变得幼稚:
    timezone.make_naive(timezone.now(), timezone.get_current_timezone())
    
  • 关于python - Django 时区是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32795354/

    10-12 22:00