Есть ли в любом случае, я могу преобразовать часовой пояс «Австралия/Мельбурн» в какой -то объект библиотеки базового класса .NET?
Вопрос
У меня есть некоторые данные с сторонней стороны, которая включает в себя некоторые string Language
Данные о свойствах. Некоторые примеры полученных данных выглядят как:
"Австралия/Мельбурн"
Когда я исследовал, на чем основывался тип данных о недвижимости, это Информация о зоне (база данных TZ / база данных OLSON). Анкет Что это за хрень? Я гуглил, и вот информация ....
Похоже, он используется многими крупными платформами ... но не .net.
Итак, прежде чем заново изобрести колесо (или, больше, обновите код с этого сайта Codeplex, чтобы встроить список DB в DLL), существует ли это в библиотеке базовых классов .NET?
Решение
Это информация о зоне (база данных TZ / база данных OLSON). Что это за хрень?
Это портативный, в значительной степени стандартный способ представления часовых поясов. Жаль, что .NET не поддерживает его должным образом, ИМО.
Вы используете .net 3.5? Если так, то TimeZoneInfo
Класс - лучшая поддержка, которую у нас есть, но преобразование из имени Олсона в имя Windows может быть сложной. В идеале вы хотите преобразование от Olson Id в идентификатор, который использует Windows ... Я не знаю, что есть один доступный.
РЕДАКТИРОВАТЬ: после небольшого копания, пара ссылок:
- А Проект Chronos Имеет отображение файлов между идентификаторами win32 и идентификаторами Olson (HTML, Текст)
- На веб -сайте Unicode есть Аналогичный картирующий файл
Я не знаю, как часто они обновляются, но они вполне могут быть вашим лучшим выбором.
Другие советы
На кодовом проекте есть отличная библиотека .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 GMT ??