2个日期之间的日期列表(从 - >到)

时间:2013-06-27 08:52:13

标签: javascript list date

我想列出两个日期之间的所有日期,例如..

list_dates('06/27/2013','07/31/2013');

此功能将返回2013年6月27日至2013年7月31日之间的所有日期,如数组...

['06/27/2013','06/28/2013','06/29/2013','06/30/2013','07/01/2013','...so_on..','07/31/2013'];

此功能适用于所有情况,例如从较旧到较旧,较旧较旧或相同的日期,如..

list_dates('06/27/2013','07/31/2013');
list_dates('07/31/2013','06/27/2013');
list_dates('07/31/2013','07/31/2013');

我喜欢......

function list_dates(a,b) {
    var list = [];
    var a_date = new Date(a);
    var b_date = new Date(b);

    if         (a_date > b_date) {

    } else if  (a_date < b_date) {

    } else {
        list.push(a);
    }

    return list;
}

演示: http://jsfiddle.net/fSGQ6/

但是如何获得2个日期之间的日期?

3 个答案:

答案 0 :(得分:3)

试试这个

list_dates('11/27/2013', '12/31/2013');
list_dates('03/21/2013', '02/14/2013');
list_dates('07/31/2013', '07/31/2013');

function list_dates(a, b) {
    var list = [];
    var a_date = new Date(a);
    var b_date = new Date(b);

    if (a_date > b_date) {
        while (a_date >= b_date) {

            var date_format = ('0' + (b_date.getMonth() + 1)).slice(-2) + '/' + ('0' + b_date.getDate()).slice(-2) + '/' + b_date.getFullYear();
            list.push(date_format);
            b_date = new Date(b_date.setDate(b_date.getDate() + 1));
        }
    } else if (a_date < b_date) {
        while (b_date >= a_date) {

            var date_format = ('0' + (a_date.getMonth() + 1)).slice(-2) + '/' + ('0' + a_date.getDate()).slice(-2) + '/' + a_date.getFullYear();
            list.push(date_format);
            a_date = new Date(a_date.setDate(a_date.getDate() + 1));
        }
    } else {
        list.push(a);
    }

    console.log(list);
}

更新:作为海报要求

答案 1 :(得分:2)

var start = new Date(2013,06,27);
var end = new Date(2013,07,31);
var result =[];
var loop = true;

while(loop){
  console.log(start.toISOString);
  result.push(start);

  start.setDate(start.getDate()+1)
  if(start>end){
    loop = false;
  }
}

答案 2 :(得分:1)

Date.prototype.getShortDate = function () {
    // Do formatting of string here
    return (this.getMonth() + 1) + "/" + this.getDate() + "/" + this.getFullYear();
}

function list_dates(a, b) {

    var a_date = new Date(a),
        b_date = new Date(b),
        list = [a_date.getShortDate()],
        change = (a_date > b_date ? -1 : 1);

    while (a_date.getTime() != b_date.getTime()) {
        a_date.setDate(a_date.getDate() + change);
        list.push(a_date.getShortDate());
    }

    return list;
}