gpt4 book ai didi

python - Postgresql 使用 Django 错误地记录日期时间

转载 作者:行者123 更新时间:2023-11-29 13:27:16 25 4
gpt4 key购买 nike

所以我有以下要保存的数据,这些数据以下列格式开头:

2015-07-26T17:00:00-0700

在我的应用程序的一个 View 中,我使用 parser 花费了上述时间:

from dateutil import parser
date = parser.parse('2015-07-26T17:00:00-0700')

返回:

2015-07-26 17:00:00-07:00

我们的想法是让它成为一个 DateTime 对象。之后,我将它保存到我的数据库中,如下所示:

  d = Events(name=event["name"],
location=event["location"],
description=event["description"],
event_time=date,
end_time=event.get("end_time", 'None'),
eventimage_url=event["cover"]["source"])
d.save()

然后当我查询数据库的时候

event_list = Events.objects.all()
print event_list[0].event_time ## There is only one record in the database

我得到以下信息:

2015-07-27 00:00:00+00:00

看起来 Postgresql 正在对我数据库中的时间进行四舍五入,我不希望它这样做。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'MY_APPLICATION',
'USER': 'MY_NAME',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}

以下是用于创建我的数据库的语句:

BEGIN;
CREATE TABLE "App_events" ("id" serial NOT NULL PRIMARY KEY, "name" varchar(128) NOT NULL, "location" varchar(128) NOT NULL, "description" varchar(10000) NOT NULL, "event_time" timestamp with time zone NOT NULL, "end_time" varchar(128) NOT NULL, "eventimage_url" varchar(300) NOT NULL);
COMMIT;

我的模型是这样设计的:

class Events(models.Model):
name = models.CharField(max_length=128)
location = models.CharField(max_length=128)
description = models.CharField(max_length=10000)
event_time = models.DateTimeField()
end_time = models.CharField(max_length=128)
eventimage_url = models.CharField(max_length=300)

有人知道如何解决这个问题吗?

最佳答案

我相信时间是正确的并且没有任何错误 - 数据库服务器中的时间以 UTC 返回给你(因为它被设置为以这种方式存储它)而不是 -7 - 如果你设置它到正确的时区你将不再有问题 - 但通常最好的做法是存储在 UTC

您可以使用像 pytz 这样的库将任何检索到的值设置为任何时区

from pytz import timezone
my_adjusted_date = timezone(valid_timezone).localize(datetime_value)

关于python - Postgresql 使用 Django 错误地记录日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com