2015-08-19 3 views
6

SO Я новичок в NodaTime и пытаюсь использовать его для хранения информации о часовом поясе с использованием объекта DateTimeZone.Как получить список строк в tzdb, используемых в качестве инициализатора часового пояса?

Я наткнулся на образец ниже в руководстве пользователя и т. Д., Который дает мне хороший объект DateTimeZone от tzdb, что здорово.

var london = DateTimeZoneProviders.Tzdb["Europe/London"]; 

Мой вопрос - как я могу получить список часовых поясов строк («Europe/London»), которые используются в tzdb. Я огляделся, негде найти. Есть ли стандартный список, к которому я могу обратиться? Как это работает? ех. - Какую строку я должен пройти для EST?

Спасибо!

ответ

13

Чтобы запрограммировать идентификаторы часовых поясов программным способом, используйте свойство Ids в IDateTimeZoneProvider. Например, чтобы найти все зоны:

var provider = DateTimeZoneProviders.Tzdb; 
foreach (var id in provider.Ids) 
{ 
    var zone = provider[id]; 
    // Use the zone 
} 

Для восточного времени, вы, вероятно, хотите Америку/New_York.

В общем, эти идентификаторы являются идентификаторами IANA - и они используются в большинстве систем, отличных от Windows.

+0

И сам список можно скачать с https://www.iana.org/time-zones? –

+0

@EndyTjahjono: У этого есть необработанные данные часового пояса. Я не знаю, какой простой способ получить все идентификаторы оттуда без большого количества других данных. –