[u'Asia/Shanghai', u'Asia/Urumqi']
,另一个是['Asia/Shanghai', 'Asia/Harbin', 'Asia/Chongqing', 'Asia/Urumqi', 'Asia/Kashgar']
。
是否有任何配置使第一个结果与第二个结果相同?
我有以下python代码:
def get_date():
date = datetime.utcnow()
from_zone = pytz.timezone("UTC")
to_zone = pytz.timezone("Asia/Urumqi")
date = from_zone.localize(date)
date = date.astimezone(to_zone)
return date
def get_curr_time_stamp():
date = get_date()
stamp = time.mktime(date.timetuple())
return stamp
cur_time = get_curr_time_stamp()
print "1", time.strftime("%Y %m %d %H:%M:%S", time.localtime(time.time()))
print "2", time.strftime("%Y %m %d %H:%M:%S", time.localtime(cur_time))
当使用此代码获取时间时,一台计算机的结果(有2个结果)是:
1 2016 04 20 08:53:18
2 2016 04 20 06:53:18
和另一个(有5个结果)是:
1 2016 04 20 08:53:18
2 2016 04 20 08:53:18
我不知道为什么?
答案 0 :(得分:0)
你可能只是在系统上有一个过时的pytz版本,返回五个时区(或者可能在两个系统上)。您可以找到最新版本here。随着世界各国政府经常改变他们的时区,保持时区更新非常重要。
与大多数系统一样,pytz从tz database获取数据。在2014f版本中,中国的五个时区减少到两个(对应于2014年的pytz)。来自the release notes:
自1970年以后,中国的五个区已经简化为两个区 其他三个人的差异似乎是想象中的。该 亚洲/哈尔滨,亚洲/重庆,亚洲/喀什地区 删除;向后兼容链接仍然有效,尽管如此 1980年5月以前的时间戳的不同行为。亚洲/乌鲁木齐 1980年已经删除了转换为UTC + 8,现在它已经过去了 UTC + 6而不是UTC + 8。 (感谢Luther Ma和Alois Treindl; Treindl发送了郭庆生两篇论文的有用翻译。)
此外,您可能希望阅读维基百科的Time in China文章,该文章解释了Asia/Urumqui
条目是针对“乌鲁木齐时代”的,该文章在新疆某些地区非正式使用。该区域未得到中国政府的承认,被视为政治问题。因此,许多系统选择省略乌鲁木齐时区,尽管它在tz数据库中列出。