私は1つの問題に悩まされています。
データ範囲の配列があります:
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'];
私はループでそれを始めました、しかし問題は月が他にジャンプするときになる、何か考え?
私は1つの問題に悩まされています。
データ範囲の配列があります:
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'];
私はループでそれを始めました、しかし問題は月が他にジャンプするときになる、何か考え?
私は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"]
これは、正規表現を使用して日付を解析しています
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]);
}
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);
}
注意してください、javescriptの月は0から始まります!
月のチェック....月=[1,3,5,6,7,8,10,12]の場合は31日を超えてはなりません。