В любом случае я могу преобразовать часовой пояс "Австралия / Мельбурн" в некоторый объект библиотеки базового класса.net?
У меня есть некоторые данные от третьей стороны, которая включает в себя некоторые string Language
данные о недвижимости. Некоторые примеры полученных данных выглядят так:
"Австралия / Мельбурн"
Когда я исследовал, на чем основан тип данных свойства, это информация о зоне (база данных tz / база данных Олсона). Что это за хрень? я погуглил и вот информация....
Похоже, он используется многими основными платформами... но не.NET.
Итак, прежде чем я заново изобрету колесо (или, более точно, обновлю код с этого сайта codeplex, чтобы встроить список БД в dll), он уже существует в библиотеке базовых классов.NET?
3 ответа
это информация о зоне (база данных tz / база данных Olson). Что это за хрень?
Это портативный, довольно стандартный способ представления часовых поясов. Обидно, что.NET не поддерживает это должным образом, IMO.
Вы используете.NET 3.5? Если так, то TimeZoneInfo
class - лучшая поддержка, которую мы получили, но преобразование из имени Олсона в имя Windows может быть сложным. В идеале вы хотите преобразовать идентификатор Олсона в идентификатор, который использует Windows... Хотя я не знаю, есть ли такой.
РЕДАКТИРОВАТЬ: После небольшого копания, пару ссылок:
- В проекте Chronos есть файлы отображения между идентификаторами Win32 и Olson ( HTML, Text)
- Веб-сайт Unicode имеет аналогичный файл сопоставления
Я не знаю, как часто они обновляются, но они могут быть вашим лучшим выбором.
В Code Project есть отличная небольшая библиотека.Net, которая делает именно то, что вам нужно:
http://www.codeproject.com/KB/locale/zoneinfo_dotnet_api.aspx
Я использую это в нескольких проектах, которые общаются с 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 по Гринвичу??