【发布时间】:2015-07-29 21:04:23
【问题描述】:
我想在 Django 日期过滤器中使用 'c' 日期格式。该格式引用了“幼稚”的日期。我不想在我的模板中包含时区(在我的 xml 中的其他地方)。
我不确定那是什么,django 的文档没有提到它,它引用的 PHP site 也没有。
它是什么,我该如何摆脱它?
【问题讨论】:
标签: python django date django-template-filters
我想在 Django 日期过滤器中使用 'c' 日期格式。该格式引用了“幼稚”的日期。我不想在我的模板中包含时区(在我的 xml 中的其他地方)。
我不确定那是什么,django 的文档没有提到它,它引用的 PHP site 也没有。
它是什么,我该如何摆脱它?
【问题讨论】:
标签: python django date django-template-filters
文档引用了 python 日期,其中available types。
时间或
datetime类型的对象可能是幼稚的或有意识的。一个datetime对象d知道d.tzinfo是否不是None 和d.tzinfo.utcoffset(d)不返回None。如果d.tzinfo是None,或者如果d.tzinfo不是None但是d.tzinfo.utcoffset(d)返回None,d 是幼稚的。time对象 t 是 知道t.tzinfo是否不是None和t.tzinfo.utcoffset(None)是否不是 返回None。否则,t 是幼稚的。
所以天真只是意味着它没有任何时区信息。
一般来说,要让一个简单的日期时间时区感知,请使用localize method:
import datetime import pytz unaware = datetime.datetime(2011, 8, 15, 8, 15, 12, 0) aware = datetime.datetime(2011, 8, 15, 8, 15, 12, 0, pytz.UTC) now_aware = pytz.utc.localize(unaware) assert aware == now_aware对于 UTC 时区,没有必要使用
localize因为没有要处理的夏令时计算:now_aware = unaware.replace(tzinfo=pytz.UTC)有效。 (
.replace返回一个新的日期时间;它不会修改unaware.)
为了让它不知道将时区设置为None。
【讨论】: