javascript - 更改 JS 日期的时区而不更改指定的时间?

标签 javascript momentjs

var schedule = {
    start_at = Date ( '2017-10-10' ), // Not editable - this data is being handed off by an ORM
    ...
};

// Mon Oct 09 2017 20:00:00 GMT-0400 (Eastern Daylight Time)
console.log ( schedule.start_at );

是否可以更改 ISO 日期的时间以匹配当前时区的 00:00:00,因此在本例中输出将为 Tue Oct 10 2017 00:00:00 GMT- 0400(东部夏令时间)

我尝试过使用 moment.utc (),但这只能帮助将日期格式化为字符串。输出需要是一个 Date 对象,并通过一些进一步的逻辑来传递。

我花了几个小时查找 Moment.js 文档,但没有找到任何可以用来解决这个问题的东西。

(注意:我将其添加到使用 Node.js 进行 API/服务器开发的缺点列表中。ISO 日期管理在我的经验中一直是一场噩梦。)

编辑:

所以我错了。事实证明,schedule.start_at 是一个设置为Mon Oct 09 2017 20:00:00 GMT-0400(东部夏令时间) 的 Date 对象。 [问题已更改以反射(reflect)]。我的问题仍然存在,如何更改日期对象以更改时区,同时保持指定的时间?

最佳答案

这是您要找的吗: 时刻 (schedule.start_at + '00-0400').toDate();

var schedule = {
    start_at : '2017-10-10'
};

var date = moment ( schedule.start_at ).toDate();
console.log(date.toString());

var date2 = moment ( schedule.start_at + ' 00-0400' ).toDate();
console.log(date2.toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

关于javascript - 更改 JS 日期的时区而不更改指定的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627685/

相关文章:

c# - 是否可以格式化/转换 13 个月日历(公历)的日期

javascript - 在浏览器中压缩音频的解决方案?

javascript - 递归比较对象并将重复的键值放入数组

javascript - React-Redux 与 webpack 给出错误 Uncaught TypeError : Super expression must either be null or a function, not undefined

javascript - node.js node-soap - 如何将客户端实例设置为父对象的属性?

javascript - 为什么 moment.js 只为某些日期生成无效日期?

javascript - 查找日期在范围内,时刻失败

javascript - 如何将 EST 中的日期字符串与 UTC 中的日期对象进行比较?

Javascript 日期格式(首选时刻)

javascript - 对象数据覆盖所有以前的数据