Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中获得时区的正确日期时间_Python_Django_Postgresql_Date_Datetime - Fatal编程技术网

Python 如何在django中获得时区的正确日期时间

Python 如何在django中获得时区的正确日期时间,python,django,postgresql,date,datetime,Python,Django,Postgresql,Date,Datetime,我的设置文件中有这个 使用_TZ=True 现在我的时区是欧洲/巴黎 现在我把datetime保存在django,就像这样 obj.start_date=datetime.strtime'Apr 27 2015 9:00AM','%b%d%Y%I:%M%p' 我知道django在数据库中保存utc格式。以DB为例 2015-04-26 23:00:00+00 我的问题是我是根据日期计算的 我输入了日期4月27日,但在数据库中它被存储为4月26日 当我做obj.start_date.date时,我

我的设置文件中有这个

使用_TZ=True

现在我的时区是欧洲/巴黎

现在我把datetime保存在django,就像这样

obj.start_date=datetime.strtime'Apr 27 2015 9:00AM','%b%d%Y%I:%M%p'

我知道django在数据库中保存utc格式。以DB为例

2015-04-26 23:00:00+00

我的问题是我是根据日期计算的

我输入了日期4月27日,但在数据库中它被存储为4月26日

当我做obj.start_date.date时,我得到的是4月26日,而不是4月27日

时间也不一样

我的计算全错了

我需要使用什么命令来获取正确的日期和时间

看看,在使用datetime库时,它使用aware datetime对象而不是naive对象。文档中有许多示例,说明如何利用时区转换为视图和模板中所需的时区


还可以看看Django建议您也安装的库。

问题是,在创建datetime对象时,您没有提供有关其时区的任何信息。因此,它被创建为原始日期时间,这会导致存储错误的值

试试这个:

from pytz import timezone
from datetime import datetime

tz_france = timezone('Europe/Paris')
loc_dt = tz_france.localize(datetime.strptime('Apr 27 2015  9:00AM', '%b %d %Y %I:%M%p'))

它应该为您提供本地化的datetime对象,Django可以将其正确转换为UTC并保存在数据库中。这个例子来自

谢谢你,我已经读了很多遍了,但还不能完全理解。如果我必须使用workuse isdst=None来为不明确或不存在的时间引发异常,您能告诉我我的代码会是什么样子吗