Вопрос списка часовых поясов - PullRequest
1 голос
/ 11 августа 2009

Для моего приложения я импортирую событие календаря из календаря Google. Единственная проблема, с которой я сталкиваюсь - это список часовых поясов. Я получаю часовой пояс как вывод из google calendar xml, который я должен проверить со списком часовых поясов и добавить время соответственно ... так, откуда я могу получить этот стандартный список часовых поясов .. или какую-то другую альтернативу для достижения того же самого .

Ответы [ 3 ]

2 голосов
/ 11 августа 2009

Если вы используете Java, используйте Joda Time - идентификатор часового пояса, указанный в Календаре Google, будет таким, который понимает Joda Time. Стандартный класс TimeZone тоже может это понять, но я думаю, что Йода с большей вероятностью.

Предполагая, что вы видите все материалы VTIMEZONE, которые сопровождают событие, вы можете игнорировать детали - просто используйте идентификатор.

К сожалению, есть некоторые идентификаторы часовых поясов, которые менялись со временем - я не могу вспомнить ни одного примера, но вам может потребоваться выполнить некоторые переводы, если вам предоставлены "старые" имена.

Если вы используете .NET, вам действительно нужно использовать .NET 3.5 и класс TimeZoneInfo. К сожалению, здесь используются имена Windows вместо идентификаторов Олсона, но где-то есть список перевода (я могу выкопать его, если хотите).

Если вы не используете ни одну из этих платформ, вам нужно найти библиотеку, которая поддерживает Olson Zoneinfo . (Эта статья в Википедии содержит несколько полезных ссылок внизу.)

Я бы определенно попытался найти библиотеку, которая сможет предоставить вам соответствующую информацию на основе идентификатора, а не использовать правила, приведенные в записи календаря. Часовые пояса меняются с течением времени, а база данных zoneinfo содержит историческую и будущую информацию, но ее нелегко закодировать в записи календаря.

1 голос
/ 11 августа 2009

Проверьте эти функции

calendar:datetime_to_gregorian_seconds({Date, Time})
calendar:gregorian_seconds_to_datetime(Seconds) -> {Date, Time}

Преобразование в «григорианские секунды» и исправление смещения часового пояса и преобразование обратно в форму даты - это половина решения.

В Erlang / OTP нет библиотеки для доступа к файлам данных часовых поясов, и, насколько я знаю, нет библиотеки третьей части, которая могла бы ее использовать. Таким образом, вы можете сами преобразовать доступные базы данных часовых поясов во что-то, что можно использовать в Erlang, или согласиться с тем, что вы знаете только некоторые из них.

Вы знаете, если только вы не хотите начать проект для чтения данных часового пояса в Erlang. : -)

1 голос
/ 11 августа 2009

Здесь есть несколько хороших статей о работе с библиотеками даты / времени Erlang: http://www.trapexit.org/Category:DateTimeRecipes
Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...