momentjs - 使用 Moment.js 将本地日期、时间和时区解析为 UTC 字符串的代码
问题描述
在单独的字段中,我从用户那里收集 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);
解决方案
问题在于日期解析。不知何故,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);
推荐阅读
- python - 更新 tkinter 接口上的当前值
- java - 来自主查询的构造函数中的多个子查询会中断 Hibernate 转换
- laravel - 未定义变量:user.blade.php 中的类别
- reactjs - 反应原生 mapbox 设置唯一值来旋转 SymbolLayer
- c++ - 我在读取文件时遇到问题
- javascript - 如何将 Babel 与 Electron 一起使用?
- java - 如何创建一个使数字向右对齐的java程序?
- python - 如何偏移 x 轴并记录 y 轴并从外部文件中找到我的图形的梯度
- audiokit - v5:CallbackInstrument 是否与其他 PolyphonicNodes 一起被删除?
- flutter - tflite 颤振应用程序仅提供一个输出