javascript - 将日期从带有偏移量的字符串转换为不同时区

标签 javascript date momentjs

我想知道将非 ISO 格式的字符串日期转换为不同的偏移量/时区的正确方法。

我目前得到了 3 个值:

  • 日期格式为 MM/DD/YYYY (23/11/2016)
  • 24 小时格式的时间 (23:13)
  • 时区偏移量 (-07:00)

我想将所述日期转换为用户的时区。

我正在尝试将格式转换为 moment timezone 的 moment.tz() 函数接受的格式('2016-11-23T23:13-07:00'),但我不知道如何在不拆分日期数组并将其转换为所述日期。

Moment 的时区有我需要将日期转换为本地时区的工具。例如:

moment.tz('2016-11-23T23:13-07:00', moment.tz.guess());

关于如何最好使用 momentJS 将偏移量 -07:00 的 23/11/2016 23:13 转换为本地日期有什么想法吗?

最佳答案

为什么不直接格式化为带有偏移量的 ISO 8601 字符串并将其提供给 moment.js?

function customToISOString(date, time, offset){
  return date.split(/\D/).reverse().join('-') + 'T' + time + offset;
}

document.write(customToISOString('23/11/2016','23:13','-07:00')); // 2016-11-23T23:13-07:00

大多数现代浏览器也会解析它,但不要这样做,因为仍然有很多旧浏览器会失败。

关于javascript - 将日期从带有偏移量的字符串转换为不同时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088391/

相关文章:

像对象 .map() 这样的 JavaScript 数组

java - 如何在 Android 中添加嵌套对象作为 JavascriptInterface?

javascript - 计算两个日期之间的天数。意想不到的结果

sql - 从 Oracle 日期中删除前导零

javascript - Moment() 与预定义的 Moment() 日期

javascript - 德语中 AM/PM 的 Angular 矩转换

node.js - 如何将 Node Date()插入到postgresql时间戳列中?

javascript - 无法使用 ng-option 选择数组的最后一个值

javascript - 从网络访问 firebase 数据库

javascript - 在 JavaScript 或 JQuery 中或使用 moment.js 计算 2 个日期和时间之间的小时、分钟