【问题标题】:How to find number of dates falls under 1 month or 3 months or 6 months in javascript?如何在javascript中查找日期数低于1个月或3个月或6个月?
【发布时间】:2016-02-06 11:07:21
【问题描述】:

我对日期数低于 1 个月或 3 个月或 6 个月或特定时间段感到有些困惑。怎么做?。日期格式为 MM/DD/YYYY。日期范围将动态添加。请任何人帮忙解决这个问题。

  • 全部 (10)
  • 上个月(6)
  • 最近 3 个月(3)
  • 过去 6 个月(1)
  • 12/25/2015 - 01/25/2016 (7)

而我的前任数组是

var array = ['01/05/2016','01/08/2016','01/09/2016','01/10/2016','01/11/2016','01/12/2016','12/25/2015','11/25/2015','11/29/2015','10/25/2015'];
var currentDate = '02/04/2016';

我必须循环数组并创建 li 元素。第一个 li 元素应该告诉数组的总数,下一个 li 元素应该告诉最近一个月的日期计数,下一个 li 应该告诉最近 3 个月。如何隔离内部循环。

【问题讨论】:

  • 我必须循环数组并在“li”元素中设置日期计数
  • 哦,是的!你不觉得你要求太多了吗?到目前为止,您尝试过什么?
  • 我将添加我尝试过的代码。但是count有问题。
  • 请参考jsfiddle.net/28qao9o8/1。我添加了静态元素。当涉及到某些日期范围并在 html 中更新时如何做到这一点。

标签: javascript jquery date


【解决方案1】:

你可以通过找出日期之间的差异来做这样的事情

var array = ['01/05/2016', '01/08/2016', '01/09/2016', '01/10/2016', '01/11/2016', '01/12/2016', '12/25/2015', '11/25/2015', '11/29/2015', '10/25/2015', '9/25/2015'];
var currentDate = '02/04/2016';
$('#range').change(function() {
    var range = this.value;
    //get the range value
    var result = array.filter(function(v) {
      // filter arry using filter()
      var diff = Math.abs((new Date(currentDate)).getTime() - (new Date(v)).getTime());
      // parse two dates and get difference between them
      return Math.ceil(diff / (1000 * 3600 * 24)) <= range * 30;
      // get the number of days difference and compare with the range
    });
    $('#list').html('Count : ' + result.length + '<br> Array : <pre> ' + JSON.stringify(result, null, 3) + '</pre>')
      // showing result in json format
  }).change()
  // triggering change event
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="range">
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
  <option value=6>6</option>
</select>
<div id="list"></div>

有用的问题:Get difference between 2 dates in javascript?

更新:根据您的需要,您可以执行类似的操作

var array = ['01/05/2016', '01/08/2016', '01/09/2016', '01/10/2016', '01/11/2016', '01/12/2016', '12/25/2015', '11/25/2015', '11/29/2015', '10/25/2015'];
var currentDate = '02/04/2016';
$('#range').change(function() {
    var range = this.value;
    //get the range value
    var result = range == 1 ? getRes(range).length : getRes(range).length - getRes($(':selected', this).prev().val()).length;
    // getting count diff if range is greater than 1
    $('#list').html('Count : ' + result);
    // showing result in json format
  }).change()
  // triggering change event

function getRes(range) {
  return array.filter(function(v) {
    // filter arry using filter()
    var diff = Math.abs((new Date(currentDate)).getTime() - (new Date(v)).getTime());
    // parse two dates and get difference between them
    return Math.ceil(diff / (1000 * 3600 * 24)) <= range * 30;
    // get the number of days difference and compare with the range
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="range">
  <option value=1>1</option>
  <option value=3>3</option>
  <option value=6>6</option>
</select>
<div id="list"></div>

【讨论】:

  • 根据我的示例,如果是上个月,它应该返回 6 和最后 3 个月,然后返回 3 和最后 6 个月,然后返回 1。一件重要的事情是如何为动态数据范围执行此操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 2017-09-29
  • 1970-01-01
相关资源
最近更新 更多