如何处理固定日期的突变?

时间:2015-12-29 22:54:55

标签: javascript momentjs

moment.js

.add()方法
  

通过增加时间来改变原始时刻。

var now = moment([2015, 11, 29, 14]);
var tomorrow = now.add(1, 'd');
// now has changed

如果我有一个固定的'现在'时刻,我希望稍后在我的程序中重复使用,那么正确的方法是什么?

我找到的最好的是像

这样的结构
var ref = [2015, 11, 29, 14];
var now = moment(ref);
var tomorrow = moment(ref).add(1, 'd');
var start = moment(ref).startOf('day'); // beginning of today
var end = moment(ref).add(1, 'd').endOf('day'); // end of tomorrow

但对我来说看起来很笨拙。

1 个答案:

答案 0 :(得分:1)

From their docs

  

注意:应该注意的是,时刻是可变的。调用任何操作方法都会改变原始时刻。

     

如果要创建副本并对其进行操作,则应在操作时刻之前使用#cron时刻。 More info on cloning

var now = moment([2015, 11, 29, 14]);
var tomorrow = now.clone().add(1, 'd');
var start = now.clone().startOf('day'); // beginning of today
var end = now.clone().add(1, 'd').endOf('day'); // end of tomorrow

quick look at their code on Github表明他们所做的一切都是return new Moment(this),因此如果您更清楚,可以通过new Moment(now)代替now.clone()来执行相同的操作。我个人认为你应该使用对你来说最清楚的任何方法。