javascript - 如何在 javascript 中过滤日期以仅获取过去 4 个月的日期?

标签 javascript jquery

如何在 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/

相关文章:

javascript - 在javascript中合并2个json

javascript - 从隐藏的 url 中检索参数

javascript - php中indexof数组js的等效项

c# - 如何在 MVC 中的 Ajax 发布后刷新我的局部 View ?

javascript - 使用 jQuery 将事件与 for 循环绑定(bind)到多个元素

javascript - 无法通过 Jquery 1.4 用于 ajax 实现的覆盖提交方法清除文本字段

javascript - 使用 FCM 向 ios 应用程序包 id 发送通知

javascript - div CSS 加载动画没有显示?

javascript - 将微调器添加到 jquery 提交的输入

javascript - 如何在 Javascript 中检查输入单词与多个数组