8

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

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

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

4

1 回答 1

6

如果它没有 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”。

于 2012-05-19T18:39:49.483 回答