【问题标题】:Django DateTimeField says 'You are 5.5 hours ahead of server time.'Django DateTimeField 说“你比服务器时间提前 5.5 小时。”
【发布时间】:2019-05-26 19:39:15
【问题描述】:

在我的一个模型中,我存储了time_stamp = models.DateTimeField(default=timezone.now)

但是当我保存模型时,它显示You are 5.5 hours ahead of server time. 例如,我机器中的本地时间是13:02,但保存后存储在数据库中的是7:16

我得到了一个相关的here,但它没有一个令人满意的答案...

models.py

class Comment(models.Model):
    time_stamp = models.DateTimeField(default=timezone.now)

    def save(self, *args, **kwargs):
        ''' On save, update timestamps '''
        if not self.id:
            self.time_stamp = timezone.now()
        return super(Comment, self).save(*args, **kwargs)

【问题讨论】:

    标签: python django timezone django-timezone


    【解决方案1】:

    由于您比服务器时间提前 5.5 小时,我假设您在印度。
    所以把合适的时区放在settings.py中

    TIME_ZONE = '亚洲/加尔各答'

    如果在其他地方,相应地设置

    【讨论】:

    • 如果其他人使用该应用程序怎么办?该用户来自不同的时区?
    • IMO,在这种情况下,您应该将时间存储在 UTC 中,即不知道时区的对象,并在向用户显示时,根据当地时区修改时间。如果您正在使用 API,那么最好返回 UTC UNIX 时间戳,让 API 的使用者决定他们想用它做什么。如果使用 Web UI,在 django 模板中,您可以使用 {% get_current_timezone as TIME_ZONE %} @0x5961736972 检测时区 阅读此内容以获取更多信息 docs.djangoproject.com/en/dev/topics/i18n/timezones/…
    【解决方案2】:

    确保在 Django 项目的 settings.py 文件中进行以下更改。

    【讨论】:

      【解决方案3】:

      如果说您比服务器时间提前 5.5 小时。这意味着你在印度然后设置

      TIME_ZONE = 'Asia/Kolkata' 
      

      在您的 setting.py 文件中。

      或在以下位置查看您的时区 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

      【讨论】:

      • 这个答案没有添加任何新内容。 @impgupta,请删除它。
      【解决方案4】:

      您需要更改 PC 上的时区设置并刷新。这是唯一的出路。我只是通过那个修复了我自己的。

      【讨论】:

        猜你喜欢
        • 2011-11-19
        • 2011-05-03
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2015-01-31
        • 2022-06-27
        • 1970-01-01
        • 2014-12-03
        相关资源
        最近更新 更多