我正在编写一些需要处理时区的 Python(Python 2.7.4(默认,2013 年 4 月 6 日,19:54:46)[MSC v.1500 32 位(英特尔)] on win32,Windows 7)代码。为此,我正在使用 pytz 库(2012d 版本),为了安全起见,我刚刚使用 easy_install 进行了更新。
我特别需要表达中国四川省成都的时间。这是在“亚洲/重庆”时区,应该比“欧洲/伦敦”早 +07:00 小时(这是我当地的时区)
出于某种原因,当我在“亚洲/重庆”区域创建 datetime.datetime 时,应用的偏移量是 +07:06 而不是我期望的 +07:00。但是当我在另一个区域(比如纽约)创建一个 datetime.datetime 时,它可以正常工作。
我认为 pytz 数据库是正确的,那么我做错了什么?我将不胜感激任何建议。
"""
Fragment of code for messing about with (foreign)
time-zones and datetime/ephem
"""
import datetime
import pytz
ChengduTZ = pytz.timezone('Asia/Chongqing')
ParisTZ = pytz.timezone('Europe/Paris')
LondonTZ = pytz.timezone('Europe/London')
NewYorkTZ = pytz.timezone('America/New_York')
MidnightInChengdu = datetime.datetime(2013, 6, 5, 0, 0, 0, 0, ChengduTZ)
MidnightInNewYork = datetime.datetime(2013, 6, 5, 0, 0, 0, 0, NewYorkTZ)
print("When it's midnight in Chengdu it's:")
print(MidnightInChengdu)
print(MidnightInChengdu.astimezone(LondonTZ))
print(MidnightInChengdu.astimezone(ParisTZ))
print(MidnightInChengdu.astimezone(NewYorkTZ))
print("\nWhen it's midnight in New York it's:")
print(MidnightInNewYork)
print(MidnightInNewYork.astimezone(LondonTZ))
print(MidnightInNewYork.astimezone(ParisTZ))
print(MidnightInNewYork.astimezone(ChengduTZ))
产生以下输出:
When it's midnight in Chengdu it's:
2013-06-05 00:00:00+07:06
2013-06-04 17:54:00+01:00
2013-06-04 18:54:00+02:00
2013-06-04 12:54:00-04:00
When it's midnight in New York it's:
2013-06-05 00:00:00-05:00
2013-06-05 06:00:00+01:00
2013-06-05 07:00:00+02:00
2013-06-05 13:00:00+08:00