【发布时间】:2013-09-03 15:56:08
【问题描述】:
我正在尝试将时区感知 datetime 对象转换为 UTC,然后再转换回原来的时区。我有以下sn-p
t = datetime(
2013, 11, 22, hour=11, minute=0,
tzinfo=pytz.timezone('Europe/Warsaw')
)
现在在 ipython 中:
In [18]: t
Out[18]: datetime.datetime(
2013, 11, 22, 11, 0, tzinfo=<DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>
)
现在让我们尝试转换为 UTC 并返回。我希望具有与以下相同的表示:
In [19]: t.astimezone(pytz.utc).astimezone(pytz.timezone('Europe/Warsaw'))
Out[19]: datetime.datetime(
2013, 11, 22, 10, 36, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>
)
但我们看到 Out[18] 和 Out[19] 不同。怎么回事?
【问题讨论】:
-
Django 存储日期时间朴素数据库明智。如果您处理这种情况,请查看此处将日期转换为您需要的时区:docs.djangoproject.com/en/dev/topics/i18n/timezones/#usage
-
Django 是否存储原始日期时间由
USE_TZ设置控制。如果那是True,那么 Django 将表单等中的日期时间视为在current timezone 中,并将它们存储在转换为 UTC 的数据库中。 -
你能进一步说明“令人兴奋的行为”吗?我不喜欢 StackExchange 上的点击诱饵
标签: python django datetime timezone pytz