Я возвращаю список дат / времени UTC из службы .Net в таком формате:
"2013-07-09 19:48:07 +00:00".
На клиенте я конвертирую каждое из этих строковых значений в соответствующий момент в формате UTC, например
var fooUtc = new moment.utc(serverDateTimeString)
На странице есть выпадающий список, содержащий список часовых поясов, которые пользователь может изменить. Они привязаны к набору объектов часовых поясов, например следующих:
{
id: "Central Standard Time",
label: "(UTC-06:00) Central Time (US & Canada)",
observesDaylightSavings: true,
baseUtcOffset: {
asHours: -6,
asMinutes: -360,
asText: "-06:00"
}
Затем я отображаю каждый момент, проходящий в выбранном смещении часового пояса, например:
fooUtc.local().zone(selectedTimeZone.baseUtcOffset.asMinutes).format()
Однако результат не учитывает летнее время, поскольку данные о часовом поясе, поступающие из .Net, не различают смещения dst и non dst.
Есть ли способ заставить эту работу работать с moment.js или новыми битами моментального часового пояса? Я думаю, что это было бы возможно, если бы я мог сопоставить стандартные имена смещений UTC (например, «Центральное стандартное время») с данного часового пояса Olson Идентификатор БД (например, "Америка / Чикаго"), но если есть более простой способ, дайте мне знать.