我有一个格式为“2012-05-19 19:13:00”的无时区日期和时间,需要使用Django 1.4及其时区感知能力存储。
尽管无法知道日期最初处于哪个时区,但将其存储为UTC时区似乎是有意义的。
但是,使用pytz等库时,我不确定如何将没有时区的日期转换为UTC datetime。
如果datetime对象没有tzinfo信息,那么就无法将其转换为UTC。相反,您可以将datetime对象转换为带有时区信息的对象:
import datetime
from pytz import UTC
dt = datetime.datetime.now() # just some date
tz_aware_dt = dt.replace(tzinfo=UTC)
编辑:
Django 1.4的迁移指南使用以下方法来实现上述功能:
>>> from django.utils.dateparse import parse_datetime
>>> naive = parse_datetime("2012-02-21 10:28:45")
>>> import pytz
>>> pytz.timezone("Europe/Helsinki").localize(naive)
datetime.datetime(2012, 2, 21, 10, 28, 45, tzinfo=<DstTzInfo 'Europe/Helsinki' EET+2:00:00 STD>)
pytz.UTC.localize(naive)
似乎可以解决问题。 - Phil Gyford