所以我要保存以下数据,以下列格式开头:
2015-07-26T17:00:00-0700
在我的应用程序的一个视图中,我使用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)
任何人都知道如何解决这个问题?
答案 0 :(得分:1)
我相信时间是正确的并且没有任何错误 - 数据库服务器中的时间以UTC(因为它设置为以这种方式存储)而不是-7 - 给予您,如果您设置的话它到适当的时区你将不再有问题 - 但通常最好的做法是以UTC格式存储
您可以使用像pytz
这样的库将任何检索到的值设置为任何时区from pytz import timezone
my_adjusted_date = timezone(valid_timezone).localize(datetime_value)
答案 1 :(得分:0)
对于遇到类似问题的任何人,您必须更改TIME_ZONE
文件中的setting.py
。使用TZ列here