Почему pytz.country_timezones('cn') в системе centos имеют другой результат?

Два компьютера устанавливают Centos 6.5, ядро ​​3.10.44, имеют разные результаты. один результат [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

Не знаю почему?

1 ответ

Решение

Возможно, у вас просто устаревшая версия pytz в системе, возвращающая пять часовых поясов (или, возможно, в обеих системах). Вы можете найти последние выпуски здесь. Важно следить за обновлениями часовых поясов, так как различные правительства мира часто меняют свои часовые пояса.

Как и большинство систем, pytz получает свои данные из базы данных tz. Пять часовых поясов для Китая были сокращены до двух в версии 2014f (соответствует pytz 2014.6). Из примечаний к выпуску:

Пять зон Китая были упрощены до двух, так как различия в остальных трех странах после 1970 года кажутся мнимыми. Зоны Азия / Харбин, Азия / Чунцин и Азия / Кашгар были удалены; ссылки обратной совместимости все еще работают, хотя и с различным поведением для отметок времени до мая 1980 года. Переход 1980 года из Азии / Урумчи в UTC+8 был удален, так что теперь он находится в UTC+6, а не в UTC+8. (Спасибо Лютеру Ма и Алоису Трейндлю; Трейндл прислал полезные переводы двух работ Го Циншена.)

Кроме того, вы можете прочитать статью Википедии " Время в Китае", в которой объясняется, что Asia/Urumqui вход для "Урумчи время", который неофициально используется в некоторых частях региона Синьцзян. Эта зона не признана правительством Китая и считается политически значимой проблемой. Таким образом, многие системы предпочитают пропускать часовой пояс Урумчи, несмотря на то, что он указан в базе данных tz.

Другие вопросы по тегам