我正在使用Django和日期时间。
我有一个datetime-string,因为这个“太阳,2016年8月28日11:42:00 +0200” - 所以我的观点包括时区信息“+0200”
然后我用它转换它:
date_published = time.strptime(date_published, "%a, %d %b %Y %H:%M:%S %z")
它给了我这个:
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=28, tm_hour=11, tm_min=42, tm_sec=0, tm_wday=6, tm_yday=241, tm_isdst=-1)
然后我尝试将其转换为:
date_published = datetime.fromtimestamp(time.mktime(date_published))
这给了我:
2016-08-28 11:42:00
然后Django在保存它时抱怨以下警告:
RuntimeWarning: DateTimeField ModelName.field_name received a naive
datetime (2012-01-01 00:00:00) while time zone support is active.
如何正确转换输入字符串,以便将其保存到时区感知日期时间模型的字段中?
最佳复制
千电子伏
答案 0 :(得分:1)
Python本身无法处理时区。你需要外部库来做到这一点。例如dateutil:
from dateutil.parser import parse
dt = parse("Sun, 28 Aug 2016 11:42:00 +0200")
答案 1 :(得分:1)
这一点应该有效:
from datetime import datetime
date_published = datetime.strptime(date_published, "%a, %d %b %Y %H:%M:%S %z")
我得到的回报是datetime.datetime(2016, 8, 28, 11, 42, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))