【发布时间】:2015-10-14 14:33:05
【问题描述】:
我对我正在编写的用于转换日期和时间的 python 程序中的以下行为感到困惑。我将原始“挂钟时间”中的数据作为新西兰标准时间,并希望将其转换为始终为 UTC+12(或 pytz 中提供的 GMT+12)。
问题是当我运行程序时,它给出的结果似乎不正确。示例输出如下所示。当输入 24/07/2015 08:00 小时(2015 年 7 月 24 日上午 8 点)的日期,定义为“太平洋/奥克兰”,然后转换为 GMT+12 时,它似乎给出了提前一天的错误结果。我不确定为什么会这样,因为如果我对时区转换的理解是正确的,那么时间应该完全相同。
有人能指出我在这里做错了什么吗?
程序输出:
Pacific/Auckland
24/07/2015 08:00
23/07/2015 08:00
“最小工作示例”源代码:
#!/usr/bin/env python
import time
import pytz
import datetime
def main():
time_zone = 'Pacific/Auckland'
print(time_zone)
local = pytz.timezone(time_zone)
time_str = '24/07/2015 08:00'
print(time_str)
t = time.strptime(time_str, '%d/%m/%Y %H:%M')
t_datetime = datetime.datetime.fromtimestamp(time.mktime(t))
local_dt = local.localize(t_datetime)
ds2 = local_dt.astimezone(pytz.timezone('Etc/GMT+12')).strftime('%d/%m/%Y %H:%M')
print(ds2)
if __name__ == '__main__':
# Parse the system arguments and get the busbar and input directory.
main()
##### END OF FILE #####
【问题讨论】:
-
这是一个实现问题;它属于 Stack Overflow,而不是这里。