В общем, вам нужно быть осторожным при сопоставлении сокращений часового пояса с идентификаторами часового пояса. Не существует сопоставления «один-к-одному». Например, CST
может быть центральным стандартным временем, стандартным временем в Китае или стандартным временем Кубы.
Поскольку у вас есть как смещение, так и аббревиатура, вы можете улучшить его немного дальше, но у вас все еще будут двусмысленности. Например, если строка содержит GMT+02:00 (EET)
, это может быть любой из the locations listed here, некоторые из которых используют EET круглый год, другие из которых используют EET зимой и EEST летом. Из тех, кто использует EEST, не все из них начинаются и заканчиваются одновременно.
В каждом варианте создается другой идентификатор часового пояса. Например, Europe/Bucharest
, Europe/Istanbul
, Europe/Chisinau
и Asia/Amman
, все используют EET и EEST, но все имеют несколько разные даты или времена перехода.
Даже если текущие переходы совпадают, возможно, они отличались исторически. Например, Europe/Athens
и Europe/Helsinki
могут выглядеть одинаково на первый, пока вы считаете, что Хельсинки не наблюдали EEST в 1980 году
Эти проблемы будут влиять на любую библиотеку или функцию, которая пытается решить часового пояса сокращения и/или смещения в определенные часовые пояса, независимо от языка программирования.
Возможный дубликат http://stackoverflow.com/questions/3489183/how-can-i-get-a-human-readable-timezone -name-in-python –
@JohnGordon: Разница в том, что в вашем вопросе речь идет о системном часовом поясе, тогда как это занимает часовой пояс из строки. – zondo
Вы могли бы попробовать использовать регулярное выражение и искать слово GMT, может быть? – ChaoticTwist