django,日期时间和时区

时间:2009-11-24 22:32:04

标签: python django

我正在使用:datetime.now()来获取Event应用程序中的当前时间,该应用程序允许您创建具有结束日期的事件,然后所有事件都显示在日历中并且如果事件通过了它以红色显示。

我的问题是我有一些用户在不同的时区而不是我说事件在错误的时间结束。他们应该在他们到期的那天午夜结束。

我在django settings.py中设置了时区。当我使用:datetime.now()是用户本地时区,还是在我在django中设置的时区?

我想要的是为用户当前时区找到午夜,所以如果上面的方法有误,我该怎么做呢?

由于

3 个答案:

答案 0 :(得分:4)

您需要用户在其用户个人资料中指定他们的时区。然后可以使用它来正确计算当地时间。

查看Relativity of time – shortcomings in Python datetime, and workaround以获取一些好的信息(以及具体示例)。

更新:从Django 1.4开始,它提供timezone支持。看看吧。

答案 1 :(得分:0)

尝试存储UTC日期时间,然后根据用户的时区进行必要的调整:

import datetime

def getUtcNow():
    return datetime.datetime(*time.gmtime()[:6])

答案 2 :(得分:0)

我在一个库上工作,透明地使用用户时区。您应该只使用Field和一些时区工具,每次执行请求或查询时都应该将所有内容转换为用户时区。

该库名为django-timezones,是对Brosner first made的修改。

尝试看看它是否适合你。