2014-09-23 3 views
2

Есть ли доступный плагин C#, который обрабатывает все time.js timezones.Moment.js часовой пояс преобразование C#. NET

Мне сложно сравнивать даты в бэкэнд, так как timezones from moment.js не совпадают с часовыми поясами из .net DateTime.

Мне нужно преобразовать время в Utc, прежде чем сравнивать разные даты времени. Я использую nodatime, и он способен обрабатывать некоторые из часовых поясов, но не все.

Спасибо.

EDIT: NodaTime обрабатывает большинство часовых поясов, но мне все еще нужно покрыть сокращения. Есть ли что-то для этого?

Спасибо.

+0

Можете ли вы преобразовать момент.js datetime в utc? Это может быть проанализировано nodatime- –

+0

спасибо. Я нашел nodatime, но у меня все еще есть проблемы с Timezone Abbrevs. Есть ли другие способы получить часовой пояс через abbrev? например ACST = австралийское центральное стандартное время –

+0

Вы можете найти * все * часовые пояса, которые когда-либо использовали конкретную аббревиатуру, но вам было бы лучше избегать аббревиатур. Не указывает ли moment.js полный идентификатор IANA, например. Европа/Лондон? –

ответ

1

Так что NodaTime обрабатывал часы Олсона, а также GMT ​​+, UTC и другие. Для сокращений я установил с этим

public static DateTimeZone GetTimeZone(string id) 
    { 
     DateTimeZone timezone = DateTimeZoneProviders.Tzdb.GetZoneOrNull(id); 

     if (timezone == null) { 
      var instant = Instant.FromDateTimeUtc(DateTime.UtcNow); 
      var source = DateTimeZoneProviders.Tzdb; 
      id = source.Ids.Where(i => source[i].GetZoneInterval(instant).Name == id).FirstOrDefault(); 
      timezone = DateTimeZoneProviders.Tzdb.GetZoneOrNull(id); 
     } 

     return timezone; 
    } 
Смежные вопросы