我有一个数据库,将日期时间存储为UTC。我需要查找特定时间的信息,但日期和时间以本地时间给出,比如说 'Europe/Copenhagen'。我得到的是:
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实际上是否解决了这些问题。而且,我并不总是知道示例是展示可以工作的还是不行的。
我尝试使用normalize:
print local_tz.normalize(t)
这会给我和print t相同的结果。
编辑:使用上述提供的年份等数字,它应该与数据库中2012-12-2 12:01的信息相匹配。(因为在那天哥本哈根是utc+1时区)
.astimezone()
仍然是正确的方法,只是方向相反。 - Martijn Pietersdatetime.datetime
实例的说明。 - Martijn Pieters