我正在创建一个应用程序,可让您定义带有时间范围的事件。我想在用户选择或更改开始日期时自动填写结束日期。但是,我不太清楚如何获得两次之间的差异,然后如何使用该差异创建新的结束日期。
在JavaScript中,可以通过调用getTime()方法 或 仅在数字表达式中使用日期将日期转换为自epoc以来的毫秒数。
getTime()
因此,要获得差异,只需减去两个日期。
要基于差异创建新日期,只需在构造函数中传递毫秒数即可。
var oldBegin = ... var oldEnd = ... var newBegin = ... var newEnd = new Date(newBegin + oldEnd - oldBegin);
这应该工作
编辑 :修正了@bdukes指出的错误
编辑 :
对于行为的解释,oldBegin,oldEnd,和newBegin是Date实例。调用运营商+和-触发的Javascript汽车铸件,并会自动调用valueOf()这些对象的原型方法。碰巧该valueOf()方法在Date对象中实现为对的调用getTime()。
oldBegin
oldEnd
newBegin
Date
+
-
valueOf()
所以基本上: date.getTime() === date.valueOf() === (0 + date) === (+date)
date.getTime() === date.valueOf() === (0 + date) === (+date)