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

Javascript 更改JS日期的时区而不更改指定的时间?,javascript,momentjs,Javascript,Momentjs,是否可以更改ISO日期的时间以匹配当前时区的00:00:00,因此在这种情况下,输出将为2017年10月10日星期二00:00:00 GMT-0400(东部夏时制) 我曾经尝试过使用moment.utc(),但这只能帮助将日期格式化为字符串。输出需要是一个日期对象,可以通过一些进一步的逻辑进行传递 我花了数小时查找Moment.js文档,但没有找到任何可以用来解决此问题的方法 (注意:在使用Node.js进行API/服务器开发时,我将这一点添加到缺点列表中。ISO日期管理在我的经验中是一场噩梦。

是否可以更改ISO日期的时间以匹配当前时区的00:00:00,因此在这种情况下,输出将为2017年10月10日星期二00:00:00 GMT-0400(东部夏时制)

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

我花了数小时查找Moment.js文档,但没有找到任何可以用来解决此问题的方法

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

编辑:


所以我错了。原来,
schedule.start\u at
是一个日期对象,设置为2017年10月9日星期一20:00:00 GMT-0400(东部夏令时)。[问题改为反映]。我的问题仍然是,在保持指定时间的同时,如何更改日期对象以更改时区?

这就是您想要的:
时刻(schedule.start_at+'00-0400').toDate()

var计划={
起始时间:2017-10-10
};
变量日期=时刻(schedule.start_at).toDate();
log(date.toString());
var date2=时刻(schedule.start_at+'00-0400')。toDate();
log(date2.toString())

我能够通过组合使用
矩.clone()
矩.add()
来完成这项任务


现在,输出已根据需要成功设置为2017年10月10日星期二00:00:00 GMT-0400(东部夏时制)

更新了问题。我想补充一点,我正在寻找能够补偿任何时区的答案,也就是说。没有硬编码。谢谢你的贡献。
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 );
var date = moment ( schedule.start_at );
var clone = date.clone ();
clone.add ( date.toDate ().getTimezoneOffset (), 'minutes' );
clone.add ( 0 - clone.utcOffset (), 'minutes' );