В любом случае я могу преобразовать часовой пояс "Австралия / Мельбурн" в некоторый объект библиотеки базового класса.net?

У меня есть некоторые данные от третьей стороны, которая включает в себя некоторые string Language данные о недвижимости. Некоторые примеры полученных данных выглядят так:

"Австралия / Мельбурн"

Когда я исследовал, на чем основан тип данных свойства, это информация о зоне (база данных tz / база данных Олсона). Что это за хрень? я погуглил и вот информация....

Похоже, он используется многими основными платформами... но не.NET.

Итак, прежде чем я заново изобрету колесо (или, более точно, обновлю код с этого сайта codeplex, чтобы встроить список БД в dll), он уже существует в библиотеке базовых классов.NET?

3 ответа

Решение

это информация о зоне (база данных tz / база данных Olson). Что это за хрень?

Это портативный, довольно стандартный способ представления часовых поясов. Обидно, что.NET не поддерживает это должным образом, IMO.

Вы используете.NET 3.5? Если так, то TimeZoneInfo class - лучшая поддержка, которую мы получили, но преобразование из имени Олсона в имя Windows может быть сложным. В идеале вы хотите преобразовать идентификатор Олсона в идентификатор, который использует Windows... Хотя я не знаю, есть ли такой.

РЕДАКТИРОВАТЬ: После небольшого копания, пару ссылок:

Я не знаю, как часто они обновляются, но они могут быть вашим лучшим выбором.

В Code Project есть отличная небольшая библиотека.Net, которая делает именно то, что вам нужно:

http://www.codeproject.com/KB/locale/zoneinfo_dotnet_api.aspx

http://zoneinfo.codeplex.com/

Я использую это в нескольких проектах, которые общаются с Google API, поскольку все их часовые пояса находятся в формате базы данных ZoneInfo/Olsen.

Я также написал сообщение в блоге о его настройке: http://www.diaryofaninja.com/blog/2011/05/27/how-to-use-zoneinfotz-time-zones-in-net-applications

Преобразовать это в GMT? найдите +x hrs или -x hrs и затем вычтите смещение из даты / времени, которые вы сохранили. например. в вашем примере вычтите 10, так как Мельбурн +10 по Гринвичу??

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