我有一个将日期时间存储为 UTC 的数据库。我需要查找特定时间的信息,但日期和时间是以当地时间给出的,比如说“欧洲/哥本哈根”。我得到这些:
year = 2012; month = 12; day = 2; hour = 13; min = 1;
所以,我需要将这些转换为 UTC,以便我可以在数据库中查找它们。我想使用pytz
. 我在看localize
:
local_tz = timezone('Europe/Copenhagen')
t = local_tz.localize(datetime.datetime(year, month, day, hour, min))
但我很困惑localize()
。这是假设年份等是在当地时间给我的吗?或者,是否假设它们以 UTC 给出,现在它已将它们转换为当地时间?
print t
给我:
2012-12-02 13:01:00+01:00
所以它似乎假设原来的年份等是UTC;小时数现在是 13+1 而不是 13。那么我应该怎么做呢?我已经阅读了 pytz 文档,但这并没有让我更清楚。它提到了很多事情很棘手,所以我不确定 pytz 是否真的在解决这些问题。而且,我并不总是知道这些示例是否向我展示了有效的东西或无效的东西。
我尝试标准化:
print local_tz.normalize(t)
这给了我与 print t 相同的结果。
编辑:使用上面给出的年份等数字,它应该与数据库中 2012-12-2 12:01 的信息相匹配。(因为哥本哈根在那个日期是 UTC+1)