Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用linq.js和momentjs从2个日期创建日期范围_Javascript_Momentjs_Linq.js - Fatal编程技术网

Javascript 使用linq.js和momentjs从2个日期创建日期范围

Javascript 使用linq.js和momentjs从2个日期创建日期范围,javascript,momentjs,linq.js,Javascript,Momentjs,Linq.js,我想得到开始日期和结束日期之间的所有日期 我再次用矩()包装startDate/endDate以克隆开始/结束日期,因为它们不能更改 但是getDateRange仍然会给我一些关于日期的奇怪结果: testCase.startDate = moment(new Date(2014, 0, 1)); testCase.endDate = moment(new Date(2014, 0, 27)); 虽然这两个日期都在2014年,但我得到的日期范围是2013年12月 为什么呢 functio

我想得到开始日期和结束日期之间的所有日期

我再次用矩()包装startDate/endDate以克隆开始/结束日期,因为它们不能更改

但是getDateRange仍然会给我一些关于日期的奇怪结果:

 testCase.startDate = moment(new Date(2014, 0, 1));
 testCase.endDate = moment(new Date(2014, 0, 27));
虽然这两个日期都在2014年,但我得到的日期范围是2013年12月

为什么呢

 function getDateRange(startDate, endDate) {
    return Enumerable.range(0, moment(endDate).diff(moment(startDate), 'days') + 1)
      .select(function (offset) {
        return moment(startDate).add(offset, 'days')
      })
      .toArray();
  }
更新


您的查询看起来应该可以运行。也许你对日期的解释不正确。请记住,只有月份开始于
0
。当你看价值的时候,也许你也抵消了这一年

下面是编写查询的另一种方法:

function getDateRange(startDate, endDate) {
    return Enumerable.Unfold(startDate, "moment($).add(1, 'd')")
        .TakeWhile(function (d) { return d <= endDate; })
        .ToArray();
}

我添加了一个截图,这样你就可以判断自己了!嗯,我不知道为什么会发生这种情况,特别是在这么大的偏移量下。也许可以尝试使用所有utc日期?看看这是否有区别。这是我一直用来测试的。我目前在太平洋时区(UTC-7),但我认为这不重要。我用我的linq方法更新了你的小提琴。和你的结果一样都很好:/我看到你使用了一个旧的linq版本,为什么会这样?那应该是最新的稳定版本(2.2),我的所有测试仍然使用它。3仍处于测试阶段,所以我还没有进行转换。但是这不会有太大的区别,只是为了我们的目的需要更改方法名的情况。
// without cloning
var date1 = moment.utc([2014, 0, 1]);
console.log(String(date1)); // Wed Jan 01 2014 00:00:00 GMT+0000
var startOfDate1 = date1.startOf('week'); // mutated
console.log(String(date1)); // Sun Dec 29 2013 00:00:00 GMT+0000

// using moment()
var date2 = moment.utc([2014, 0, 1]);
console.log(String(date2)); // Wed Jan 01 2014 00:00:00 GMT+0000
var startOfDate2 = moment(date2).startOf('week'); // not mutated
console.log(String(date2)); // Wed Jan 01 2014 00:00:00 GMT+0000

// using clone()
var date3 = moment.utc([2014, 0, 1]);
console.log(String(date3)); // Wed Jan 01 2014 00:00:00 GMT+0000
var startOfDate3 = date3.clone().startOf('week'); // not mutated
console.log(String(date3)); // Wed Jan 01 2014 00:00:00 GMT+0000