【发布时间】:2016-08-16 07:19:54
【问题描述】:
我正在用 django 编写一个项目。
我正在使用时区“亚洲/上海”,当我获取日期时间对象时,时区的偏移量不正确并且是:
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
并且偏移量应该是+8:00:00 AFAICR,这个问题以前不存在。
我该如何解决这个问题?
【问题讨论】:
-
您应该显示创建
datetime对象的行。提到什么是USE_TZ(应该是True)、TIME_ZONE(默认时区)和当前时区(由django.utils.timezone.activate()激活)。 -
这显然是一个已知的 pytz 错误:answers.launchpad.net/pytz/+question/186082。这个 pytz 常见问题解答可能会有所帮助:answers.launchpad.net/pytz/+faq/1.
-
@evergreen:这不是错误。
pytzdocs say at the top thatlocalize()should be used。无论如何,如果你使用 django 的时区 API,那么你不需要知道pytzAPI,即熟悉一个 API(django 或 pytz)就足够了。 -
@J.F. Sebastian:正如 OP 所指出的,我所指的错误是 pytz 对亚洲/上海时区的偏移量不正确。也许错字是比错误更好的描述。您对文档说应该使用 localize() 是正确的。这就是我参考常见问题解答的原因。
-
@evergreen 再次,没有错误。 pytz 具有正确的时区信息(在不同的日期有多个 UTC 偏移量)。 OP 错误地使用了库——选择了错误的 UTC 偏移量。常见问题解答以及文档说明了应该如何使用它(以获得正确的 UTC 偏移量)。
标签: python django datetime pytz