【问题标题】:django, datetime and timezonesdjango,日期时间和时区
【发布时间】:2009-11-24 22:32:04
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: python django


    【解决方案1】:

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

    查看Relativity of time – shortcomings in Python datetime, and workaround 了解一些有用的信息(和具体示例)。

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

    【讨论】:

      【解决方案2】:

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

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

      试试看它是否适合你。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2014-11-10
          • 2013-06-30
          • 2022-08-21
          • 1970-01-01
          • 2020-10-19
          • 1970-01-01
          • 1970-01-01
          • 2018-01-27
          • 2019-01-03
          相关资源
          最近更新 更多