javascript - 获取日期时间字符串的偏移量并应用于新的日期对象

标签 javascript date datetime object momentjs

我有一个从后端返回的日期时间字符串,如下所示:

2018-12-30T20:00:00-05:00

我试图获取此日期时间字符串的偏移量并将其应用于新的 Date 对象。

当我这样做时......我得到了客户的时区日期,而不是我想要的。

var time = "2018-12-30T20:00:00-05:00"
new Date(time)

我不介意利用 momentjs 或 JS 中的任何其他库,但我试图在我的前端中做到这一点。

更新

如果从我的后端返回的日期具有 -05:00 作为偏移量...那么当我在前端创建日期对象时...它应该具有相同的偏移量

例如:

2018-12-31T10:00:00-05:00

最佳答案

如果您愿意使用 moment,您可以使用 utcOffset 轻松提取日期/时间的偏移量。您可以使用相同的函数将偏移量应用到新的日期/时间。这是两个代表相同时间但具有不同偏移量的矩对象。这会将第二个值转换为第一个值的偏移量,而不改变绝对时间:

var time = "2018-12-30T10:00:00-05:00"
let m = moment.parseZone(time)
let offset = m.utcOffset()
console.log("original: ", m.format(), "Offset:", offset)

// same time as m but -1 ofset
let m2 = moment.parseZone("2018-12-30T14:00:00-01:00")
console.log("m2 original: ", m2.format())

// change offset
m2.utcOffset(offset)
console.log("m2 converted: ", m2.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>

关于javascript - 获取日期时间字符串的偏移量并应用于新的日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53982238/

相关文章:

android - 如何将来自数据库的日期格式更改为android

javascript - TinyMCE 中的水平线样式

javascript - 如果鼠标未悬停,延迟后隐藏 DIV?

Linux:列出文件名,如果上次修改在日期间隔之间

java - 将字符串转换为日期并格式化日期

java - 以毫秒为单位解析 CIM_DateTime 到 Java Date

javascript - 提交时仅在 jQuery 中显示一次消息

javascript - Realm.open 与新 Realm

python - 将字符串转换为日期时间到纪元

python - 从日期获取毫秒数,但显示比实际少一天