django

时间:2016-01-07 06:00:01

标签: python django datetime

我在django中面临时间格式的一些问题。

我的模型DateTimeField正在使用auto_now存储日期时间,我正在尝试使用此datetimefield过滤数据。 我用于comapre的输入日期时间是不同的格式,如2016-1-5T5:00:00,存储在djnago模型中的日期时间是默认的django格式,因为我使用的是auto_now。 我得到的错误如下:

RuntimeWarning: DateTimeField MyModel.modified_at received a naive datetime (2016-01-05 05:00:00) while time zone support is active.
  RuntimeWarning)

所以我想我需要将输入时间转换为django合适的格式。 知道如何比较这两个日期,以便我的查询可以过滤正确的数据。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用时区感知日期时间? e.g。

datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=<UTC>)

你可以这样:

import pytz
timezone_aware_time = pytz.timezone('UTC').localize(datetime.datetime(2013, 11, 20, 20, 8, 7, 127325))

要将字符串转换为兼容格式,然后为其指定时区,请执行以下操作:

import datetime from datetime
datetime.strptime('2016-1-5T5:00:00', '%Y-%m-%dT%H:%M:%S')

所以,完全是:

import pytz
import datetime from datetime
timezone_aware_time = pytz.timezone('UTC').localize(datetime.strptime('2016-1-5T5:00:00', '%Y-%m-%dT%H:%M:%S'))

作为参考,auto_now是时区UTC。