一尘不染

如何获取JavaScript中两个日期之间的区别?

javascript

我正在创建一个应用程序,可让您定义带有时间范围的事件。我想在用户选择或更改开始日期时自动填写结束日期。但是,我不太清楚如何获得两次之间的差异,然后如何使用该差异创建新的结束日期。


阅读 310

收藏
2020-04-25

共1个答案

一尘不染

在JavaScript中,可以通过调用getTime()方法 仅在数字表达式中使用日期将日期转换为自epoc以来的毫秒数。

因此,要获得差异,只需减去两个日期。

要基于差异创建新日期,只需在构造函数中传递毫秒数即可。

var oldBegin = ...
var oldEnd = ...
var newBegin = ...

var newEnd = new Date(newBegin + oldEnd - oldBegin);

这应该工作

编辑 :修正了@bdukes指出的错误

编辑

对于行为的解释,oldBeginoldEnd,和newBeginDate实例。调用运营商+-触发的Javascript汽车铸件,并会自动调用valueOf()这些对象的原型方法。碰巧该valueOf()方法在Date对象中实现为对的调用getTime()

所以基本上: date.getTime() === date.valueOf() === (0 + date) === (+date)

2020-04-25