momentjs - 奇怪的是startOf和endOf

时间:2016-07-01 16:24:35

标签: momentjs

我试图让特定的一天开始和结束。

以下是代码:

var newDay, newDayEnd, newDayStart;

if (newDay === '') {
  newDay = moment();
}

newDay.subtract('day', 1);

newDayStart = newDay.startOf('day');    
newDayEnd = newDay.endOf('day');

我试图调试它,并且我注意到,如果值通过,则值正确,但一旦达到newDay.endOf('day'),它会将所有变量设置为指定日期的结尾( 23.59.59)

我在点击按钮时使用上述功能。每次我点击一个按钮,它都会返回(newDay.subtract('day', 1))一天,我需要能够开始和结束新的一天(newDay变量)

有任何帮助吗? 我在这做错了什么?我不明白。

由于

1 个答案:

答案 0 :(得分:1)

Moment对象是可变的,因此在修改它们之前必须clone()

正如您可以阅读endOf文档:

  

通过将原始时刻设置为单位时间的结尾来突变原始时刻。

工作示例:

var newDay, newDayEnd, newDayStart;
newDay = moment().subtract(1, 'day');

newDayStart = newDay.clone().startOf('day');
newDayEnd = newDay.clone().endOf('day');
console.log(newDayStart.format(), newDayEnd.format());
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>