0

在单独的字段中,我从用户那里收集 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);
4

1 回答 1

0

问题在于日期解析。不知何故,moment 能够解析日期,但如果日期不是 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);
于 2019-03-18T13:12:11.877 回答