【问题标题】:Code to parse a local date, time, and timezone into a UTC string with Moment.js使用 Moment.js 将本地日期、时间和时区解析为 UTC 字符串的代码
【发布时间】:2019-03-15 18:41:39
【问题描述】:

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

【问题讨论】:

    标签: momentjs moment-timezone


    【解决方案1】:

    问题在于日期解析。不知何故,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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2014-11-14
      • 2013-09-15
      • 2016-02-27
      相关资源
      最近更新 更多