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

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 19 марта 2009

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

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

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

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

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

2 голосов
/ 28 мая 2011

В 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

0 голосов
/ 19 марта 2009

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

...