【发布时间】:2014-06-25 15:19:50
【问题描述】:
我正在尝试编写一个处理事件计时的 django 网站。我想要一个日历视图,我可以在其中显示与每一天相关的事件。
我的初步研究表明,最佳实践是以 UTC 格式存储所有时间,包括它们在数据库中的偏移量。我的麻烦是,如果我有两个事件:
- 事件
A开始于2014-05-05 00:20:00+00:00(在零偏移时区的星期一午夜之后。) - 事件
B开始于2014-05-05 00:20:00+01:00(就在星期一午夜之后,在一小时偏移时区中,因此就在午夜之前,在像UTC 这样的零偏移时区中。)
我想查询从2014-05-05 开始的所有事件,然后我执行如下查询:
monday_start = make_aware(datetime(2014, 5, 5), utc)
monday_end = make_aware(datetime(2014, 5, 6), utc)
events = EventInstance.objects.filter(
start_datetime__gte=monday_start,
start_datetime__lt=monday_end,
)
而且我只得到一个事件。理想情况下,我会得到两者,因为它们都在各自时区的星期一。
如果我提供天真的日期时间对象,即。日期时间没有时区,对于查询,我从 Django 收到警告,但仍然只得到一个结果。
问题:处理这种情况的最佳方法是什么?
我觉得最好存储没有偏移的所有时间,然后将事件的时区存储在单独的字段中,以便可以针对原始时间进行查询,然后在必要时使用时区显示给用户.但这可能有我无法预见的陷阱。
【问题讨论】:
-
这可能更像是programmers.stackexchange.com 的问题吗?