Django时区转换

时间:2013-09-28 03:45:59

标签: python django django-templates pytz django-timezone

我在日志和显示屏中看到一些奇怪的行为。我无法理解。

在settings.py中

TIME_ZONE = 'America/Chicago'
USE_TZ = True
在views.py中

local_timezone = pytz.timezone("America/Chicago")
blast = Blast.objects.get(id=blast_id)
blast_time = local_timezone.normalize(blast.date.astimezone(local_timezone))

print local_timezone
print blast.date
print blast_time

输出:

>>America/Chicago
>>2013-09-27 16:00:00+00:00
>>2013-09-27 11:00:00-05:00

一切似乎都很好。

然后在模板中:

{{ blast.date|date:'D, d M  h:i A e' }} {{ blast.date.tzinfo }}
({{ blast_time }} {{ blast_time.tzinfo }})

呈现为:

FRI, 27 SEP 11:00 AM CDT UTC
(SEPT. 27, 2013, 11 A.M. AMERICA/CHICAGO)

请注意,第一行声称有两个不同的时区,原因我无法理解。

将settings.py中的默认时区更改为“America / New_York”(但将视图保留为America / Chicago)会导致:

>>2013-09-27 16:00:00+00:00
>>2013-09-27 11:00:00-05:00

并呈现为:

FRI, 27 SEP 12:00 PM EDT UTC
(SEPT. 27, 2013, NOON AMERICA/CHICAGO)

为什么渲染的|date:'e'.tzinfo的值不同?而且,为什么转换到不同时区的blast_time显示同一小时?

0 个答案:

没有答案