Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 获取两个日期之间的日期重复指定日期范围之外的错误日期_Javascript - Fatal编程技术网

Javascript 获取两个日期之间的日期重复指定日期范围之外的错误日期

Javascript 获取两个日期之间的日期重复指定日期范围之外的错误日期,javascript,Javascript,我有下面的代码,它返回两个给定日期之间的日期,但是,我得到的日期超出了指定的范围 我需要返回格式化字符串,如:12/01/2015或01/01/2015。请注意添加的前导零。如果我输入一个日期范围,如:2015年1月12日-2016年1月31日,我会得到一个从2015年1月11日开始的日期 如何仅获取给定范围内的代码 var getDates = function(startDate, endDate) { var dates = [], currentDate = st

我有下面的代码,它返回两个给定日期之间的日期,但是,我得到的日期超出了指定的范围

我需要返回格式化字符串,如:
12/01/2015
01/01/2015
。请注意添加的前导零。如果我输入一个日期范围,如:
2015年1月12日-2016年1月31日
,我会得到一个从2015年1月11日开始的日期

如何仅获取给定范围内的代码

var getDates = function(startDate, endDate) {
    var dates = [],
        currentDate = startDate,
        addDays = function(days) {
            var date = new Date(this.valueOf());
            date.setDate(date.getDate() + days);
            return date;
        };

    while (currentDate <= endDate) {

        dates.push(('0' + currentDate.getMonth()+ 1 ).slice(-2) + '/' + 
            ('0' + currentDate.getDate()).slice(-2) + '/' + currentDate.getFullYear());
        currentDate = addDays.call(currentDate, 1);
    }

    return dates;
};
var getDates=函数(开始日期、结束日期){
var日期=[],
当前日期=开始日期,
addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
};
而(currentDate更改此行

dates.push(('0' + currentDate.getMonth()+ 1 ).slice(-2) + '/' + 
                ('0' + currentDate.getDate()).slice(-2) + '/' + currentDate.getFullYear());

首先添加
1
,然后添加
0
,然后添加
slice

您还需要使用
newdate()
将startDate和endDate解析为日期

完整的代码应该如下所示:

var getDates = function(startDate, endDate) {
  var dates = [],
    currentDate = new Date(startDate),
    endDate = new Date(endDate),
    addDays = function(days) {
      var date = new Date(this.valueOf());
      date.setDate(date.getDate() + days);
      return date;
    };
  while (currentDate <= endDate) {
    dates.push(('0' + (currentDate.getMonth() + 1)).slice(-2) + '/' +
      ('0' + currentDate.getDate()).slice(-2) + '/' + currentDate.getFullYear());

    currentDate = addDays.call(currentDate, 1);
  }

  return dates;
};

console.log(getDates("12/06/2015", "01/31/2016"));
var getDates=函数(开始日期、结束日期){
var日期=[],
currentDate=新日期(开始日期),
endDate=新日期(endDate),
addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
};

while(currentDate您可以使用矩库()。在这种情况下,此函数类似于

var start = moment('2015-12-01');
var end = moment('2016-01-01');

var getDates = function(start, end) {
    var dates = [];
    while (start <= end) {
        dates.push(start.format('MM/DD/YYYY'));
        start.add(1, 'd');
    }
    return dates;
}

var dates = getDates(start, end);

console.log(dates);
var开始=力矩('2015-12-01');
var端=力矩('2016-01-01');
var getDates=函数(开始、结束){
var日期=[];

while(开始,为什么不使用moment.js?它非常容易使用,并且允许灵活地操作日期如果安装了jQuery ui,则可以使用以下命令将日期对象转换为字符串:
$.datepicker.formatDate(“mm dd yy”,新日期(2015,01,12));
(在第二个参数中传递日期对象)这使得代码分配更清晰,在处理日期时更不容易混淆。我支持提名moment.js作为候选解决方案。我在前面已经回答了这个问题-。如果不能选择额外的库,我想指出,你可以从他们那里获得解决方案,因为它是一个开源库。我喜欢矩框架。我已经在我的应用程序中与require JS一起使用了它。但是,我不知道我能做的比我已经做的更多。谢谢你指出这一点。谢谢!!我将以此作为我努力的答案,因为这是我的初衷,但我想我会跳上
矩.JS
火车。:)
var start = moment('2015-12-01');
var end = moment('2016-01-01');

var getDates = function(start, end) {
    var dates = [];
    while (start <= end) {
        dates.push(start.format('MM/DD/YYYY'));
        start.add(1, 'd');
    }
    return dates;
}

var dates = getDates(start, end);

console.log(dates);