Идентификатор часового пояса Олсона в стандартном формате Windows с использованием времени Noda - PullRequest
4 голосов
/ 21 января 2012

Преобразование между идентификаторами времени Олсона и Windows несколько раз происходило на SO;так как многие люди предложили Джону Скиту Время Нода для этой задачи.

Хотя на странице Google Code указано, что есть функция для преобразования между ними, я нигде не могу найти подробности того, каксделать это.

Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 20 июня 2012

Нет, к сожалению, в настоящее время у нас нет такого сопоставления (от Windows до Олсона).

Весь интерфейс "провайдера" сейчас немного в эфире:

  • Даже в текущем коде есть изменения API, которые мы хотим внести, частично для того, чтобы сделать код с его помощью более тестируемым
  • Отображения Unicode CLDR изменились между 1.x и 2.x,так что теперь существует несколько сопоставлений в каждом направлении, потенциально (IIRC).

Другими словами: извините, мы не поддерживаем это в данный момент, но мы будем иметь это в виду при попыткедоработать 1.0 API.

0 голосов
/ 22 мая 2012

TzdbTimeZoneProvider поддерживает преобразование из Windows в Olson, но BclTimeZoneProvider (поставщик часовых поясов для Windows) не имеет правильной реализации метода MapTimeZoneId, и интерфейс кажется неправильным ...

Вот реализация на TzdbTimeZoneProvider:

 public string MapTimeZoneId(TimeZoneInfo zone)
 {
   string str;
   this.windowsIdMap.TryGetValue(zone.Id, out str); 
   return str;
 }

Примечание: windowsIdMap - это словарь

Вот реализация на BclTimeZoneProvider:

public string MapTimeZoneId(TimeZoneInfo timeZone)
{
  return timeZone.Id;
}

Примечание: он просто возвращает идентификатор часового пояса Windows.

Кажется, более правильным интерфейсом для этого метода будет:

 string MapTimeZoneId(string providerZoneId);

Тогда обе реализации могут быть выполнены правильно. Я думаю, вы можете задать этот вопрос в группах Google Noda Time.

Пока вы можете заглянуть в TzdbTimeZoneProvider, чтобы найти способ сопоставления Олсона с Windows tz (простая итерация по значениям windowsIdMap).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...