【发布时间】:2011-09-27 00:20:26
【问题描述】:
我有一个格式为“20111014T090000”的字符串以及相关的时区 ID (TZID=America/Los_Angeles),我想要 使用适当的偏移量将其转换为 UTC 时间(以秒为单位)。
问题似乎是我的输出时间减少了 1 小时(它在 PST 中应该是 PDT)并且我正在使用 pytz 来帮助处理 timezo
import pytz
def convert_to_utc(date_time)
# date_time set to '2011-10-14 09:00:00' and is initially unaware of timezone information
timezone_id = 'America/Los_Angeles'
tz = pytz.timezone(timezone_id);
# attach the timezone
date_time = date_time.replace(tzinfo=tz);
print("replaced: %s" % date_time);
# this makes date_time to be: 2011-10-14 09:00:00-08:00
# even though the offset should be -7 at the present time
print("tzname: %s" % date_time.tzname());
# tzname reports PST when it should be PDT
print("timetz: %s" % date_time.timetz());
# timetz: 09:00:00-08:00 - expecting offset -7
date_time_ms = int(time.mktime(date_time.utctimetuple()));
# returns '1318611600' which is
# GMT: Fri, 14 Oct 2011 17:00:00 GMT
# Local: Fri Oct 14 2011 10:00:00 GMT-7
# when expecting: '1318608000' seconds, which is
# GMT: Fri, 14 Oct 2011 16:00:00 GMT
# Local: Fri Oct 14 2011 9:00:00 GMT-7 -- expected value
如何根据时区 ID 获得正确的偏移量?
【问题讨论】:
-
您需要致电
date_time.localize。这是这里完全缺少的唯一基本成分。