Код для анализа локальной даты, времени и часового пояса в строку UTC с Moment.js - PullRequest
0 голосов
/ 15 марта 2019

В отдельных полях я собираю DisplayDate, DisplayTime и TimeZone от пользователя.Я хочу поместить их в момент и вывести строку в формате UTC, чтобы сохранить в скрытом поле, которое отправляется обратно на сервер.Я использовал приведенный ниже код, но он использует местный часовой пояс, а не выбранный часовой пояс, который я ввел.Как мне заставить его наблюдать selTimeZonesVal?

var startTime = $('#StartTime');
var displayDateVal = $('#DisplayDate').val();
var displayTimeVal = $('#DisplayTime').val();
var selTimeZonesVal = $('#TimeZones').val();

var dtMoment = moment(displayDateVal + ' ' + displayTimeVal).tz(selTimeZonesVal);
var formattedUtc = dtMoment.utc().format('YYYY-MM-DDTHH:mm:ss');
startTime.val(formattedUtc);

1 Ответ

0 голосов
/ 18 марта 2019

Проблема была с разбором даты.Каким-то образом, моменту удалось проанализировать дату, но он игнорировал бы часовой пояс, если бы дата не была в формате ISO.

Исправление:

var startTime = $('#StartTimeUtc');
var displayDateVal = $('#DisplayDate').val();
var displayTimeVal = $('#DisplayTime').val();
var selTimeZonesVal = $('#TimeZones').val();

// Massage the date so moment can parse it (moment doesn't like mm/dd/yyyy)
var localDT = new Date(displayDateVal + ' ' + displayTimeVal);
var parseDT = moment(localDT).format('YYYY-MM-DDTHH:mm:ss')

var dtMoment = moment.tz(parseDT, selTimeZonesVal);
var formattedUtc = dtMoment.utc().format('YYYY-MM-DDTHH:mm:ss');
startTime.val(formattedUtc);
...