如何在 JavaScript 中过滤日期以仅获取过去 4 个月的日期?
例如,如果我的最后一个日期是 2014 年 10 月 21 日,我只需要 2014 年 7 月到 10 月的数据(因此,如果我有 2013 年 10 月 14 日,它将被过滤掉)
这是我到目前为止所拥有的:
$.each(dataArray, function(i, data){
boundaryDates.push(data.values[0].x);
boundaryDates.push(data.values.slice(-1).pop().x);
});
var maxDate=new Date(Math.max.apply(null,boundaryDates));
var minDate=new Date(Math.min.apply(null,boundaryDates));
//Convert Date
var day = maxDate.getDay() < 9 ? '0'+maxDate.getDay():maxDate.getDay();
var month = maxDate.getMonth() < 9 ? '0'+maxDate.getMonth():maxDate.getMonth();
var mday = minDate.getDay() < 9 ? '0'+minDate.getDay():minDate.getDay();
var mmonth = minDate.getMonth() < 9 ? '0'+minDate.getMonth():minDate.getMonth();
var maximumDate = maxDate.getFullYear()+'-'+month+'-'+day;
var minimumDate = minDate.getFullYear()+'-'+mmonth+'-'+mday;
$.each(chartData, function(j, gid){
if(gid.x >= minimumDate && gid.x <= maximumDate ){
gvalues.push(gid);
}
});
最佳答案
如果我正确理解你的问题,这将是算法:
- 从给定的日期数组中获取最后(最大)日期
- 将其复制到新日期
- 将该副本的月份设置为 4 个月前 (
setMonth
) - 将该副本推送到新数组
- 将新日期(使用
setDate
)推送到该数组,从复制的日期开始,直到要推送的日期为最大日期
在代码中:
var date0 = new Date()
,dateBack = new Date(date0)
,last4MonthsDate = [];
dateBack.setMonth(dateBack.getMonth()-4);
last4MonthsDate.push(new Date(dateBack));
while (dateBack < date0) {
dateBack.setDate(dateBack.getDate()+1);
last4MonthsDate.push(new Date(dateBack));
}
// show the result
document.querySelector('#result').innerHTML =
last4MonthsDate.map(function (v) {
return [ v.getFullYear(),
padLeft(v.getMonth()+1),
padLeft(v.getDate()) ].join('-');
}
).join('<br>');
// helper for padding
function padLeft(num, base, chr) {
var len = (String(base || 10).length - String(num).length) + 1;
return len > 0 ? new Array(len).join(chr || '0') + num : num;
}
<div id="result"></div>
关于javascript - 如何在 javascript 中过滤日期以仅获取过去 4 个月的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479747/