2

我有一个问题。

我有一组数据范围:

var range_date_off=['31/03/2013','03/04/2013'];

我需要将其转换为:

var dates_off=['31/03/2013','01/04/2013','02/04/2013','03/04/2013'];

我开始用循环来做,但是当月份跳到另一个月份时,问题就变成了,知道吗?

4

4 回答 4

4

我在date.js这里使用:

range = ['31/03/2013','03/04/2013']

begin = Date.parseExact(range[0], 'dd/MM/yyyy')
end   = Date.parseExact(range[1], 'dd/MM/yyyy')

dates = []

while(begin <= end) {
    dates.push(begin.toString("dd/MM/yyyy"))
    begin.addDays(1)
}

结果:

["31/03/2013", "01/04/2013", "02/04/2013", "03/04/2013"]
于 2013-03-27T13:06:46.420 回答
3

这是使用 regx 解析日期

var range_date_off=['31/03/2013','03/04/2013'];
var d1 = parseDate(range_date_off[0])
var d2= parseDate(range_date_off[1])

var days= [];
for (var dt = d1; dt <= d2; dt.setDate(dt.getDate() + 1)) {
    var fdt = new Date(dt)
    days.push ( fdt.getDate() + "/" + (fdt.getMonth() + 1) + "/" + fdt.getFullYear());
}

function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  return new Date(parts[2], parts[1]-1, parts[0]); 
}
于 2013-03-27T13:27:41.180 回答
1

您可以使用 UTC 算法来做到这一点:

var start = Date.UTC(2013, 2, 31);
var end = Date.UTC(2013, 3, 3);
var currDate = start;
var dates = [];
while (currDate <= end) {
    var d = new Date(currDate);
    dates.push((d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear()));
   currDate += (1000 * 60 * 60 * 24);
}

注意,javascript 月份从 0 开始!

http://jsfiddle.net/hKxzw/

于 2013-03-27T13:15:52.937 回答
-1

月份检查 .... 如果月份 = [1,3,5,6,7,8,10,12] 不得大于 31 天,依此类推 ....

于 2013-03-27T13:04:16.243 回答