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

Date listing between 2 dates (from -> to)

本文关键字:日期 gt 列表 2个 之间      更新时间:2023-09-26

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

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/

但是如何获得两次约会之间的约会?

尝试这个

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);
}

更新:作为海报要求

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;
  }
}
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;
}