2015-06-16 3 views
0

C# поддерживает различные идентификаторы часовых поясов по всему миру. Вы можете найти список часовых поясов, которые в настоящее время поддерживается на C# в ссылке ниже:Поддержка временной зоны IANA/Olson в C#

https://msdn.microsoft.com/en-us/library/gg154758.aspx

часовой пояс, идентификаторы, используемые в функции # библиотеки C, чтобы преобразовать раз через часовые пояса.

[например. TimeZoneInfo.ConvertTimeBySystemTimeZoneId("Hawaiian Standard Time")]

Аналогично, я хочу поддержку AMERICA/MIQUELON, которой нет в списке msdn, указанном в ссылке выше.

Может ли кто-нибудь запросить обходной путь для данного конкретного часового пояса?

+0

Вы можете легко ** ** перечислить все часовые пояса, известные C#/.NET, глядя на [код, представленный в этом другом SO вопрос] (http://stackoverflow.com/questions/7908343/list-of-timezone-ids-for-use-with-findtimezonebyid-in-c) - если появятся строки вашего часового пояса - они поддерживаются .NET ... –

+1

Это не часть Канады , он охватывает два небольших острова, которые являются частью Франции, там проживает всего 6000 человек. Веб-сайты не согласны, но большинство предпочитает UTC-3: 00 с летней экономией. Слишком скрыто, чтобы быть охваченным встроенными временными часами Windows, отличными от нуля, что они следуют Ньюфаундленду. Лучше всего спросить своего клиента, что с ним делать. –

+0

Почему бы вам просто не использовать другой часовой пояс, который использует одно и то же смещение UTC? – JNYRanger

ответ

0

Идентификаторы часовых поясов, такие как "America/Miquelon" и другие, которые вы указали (до редактирования вашего вопроса), из базы данных часовых поясов IANA. Вы можете узнать больше в the timezone tag wiki и on Wikipedia.

Обратите внимание, что они обычно представлены в смешанной форме, а не во всех прописных буквах.

Самый простой и лучший способ работать с ними в .NET - через библиотеку Noda Time.

Например:

DateTimeZone tz = DateTimeZoneProviders.Tzdb["America/Miquelon"]; 
Instant now = SystemClock.Instance.Now; 
ZonedDateTime converted = now.InZone(tz); 
Смежные вопросы