Javascript 更改JS日期的时区而不更改指定的时间?
是否可以更改ISO日期的时间以匹配当前时区的00:00:00,因此在这种情况下,输出将为2017年10月10日星期二00:00:00 GMT-0400(东部夏时制) 我曾经尝试过使用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日期管理在我的经验中是一场噩梦。
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' );