如何在Django 1.4中存储一个本地时间日期?

8

我有一个格式为“2012-05-19 19:13:00”的无时区日期和时间,需要使用Django 1.4及其时区感知能力存储。

尽管无法知道日期最初处于哪个时区,但将其存储为UTC时区似乎是有意义的。

但是,使用pytz等库时,我不确定如何将没有时区的日期转换为UTC datetime。

1个回答

6

如果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>)

你应该使用那个版本,将"UTC"替换为"Europe/Helsinki"。

太棒了,谢谢。使用 pytz.UTC.localize(naive) 似乎可以解决问题。 - Phil Gyford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接