javascript - 如何在 JavaScript 中将日期列表压缩为范围?

标签 javascript date datetime momentjs

我有一个这样的日期列表:

1994年8月2日、1994年10月31日、1994年12月6日、1994年12月7日、1994年12月8日、1997年2月4日、1997年2月5日、1997年2月6日、1997年2月7日、1997年2月8日、1997年2月9日、199年2月10日7 , 1997年2月11日, 1997年2月12日, 1997年2月13日, 1997年2月14日, 1997年2月15日, 1997年2月16日, 1997年2月17日, 1997年2月18日, 1997年2月19日, 1997年2月20日, 1997年2月21日, 1997 年 2 月 22 日、23 日1997年2月、1997年2月24日、1997年2月25日、1997年2月26日、1997年2月27日、1997年2月28日及1997年6月17日

我想将此列表压缩为用户更容易阅读的内容,如下所示:

1994年8月2日、1994年10月31日、1994年12月6日至8日、1997年2月4日至28日和1997年6月17日

日期已经以纪元秒的形式存储在 JavaScript 数组中。我不知道从哪里开始做这件事。如果有帮助的话,我已经在使用 moment.js 了。

有什么想法吗?

最佳答案

你可以这样尝试: 这不是最好的方法,但它会对您有用

   var dates = ["2nd August 1994", "31st October 1994", "6th December 1994", "7th December 1994", "8th December 1994", "4th February 1997", "5th February 1997", "6th February 1997", "7th February 1997", "8th February 1997", "9th February 1997", "10th February 1997", "11th February 1997", "12th February 1997", "13th February 1997", "14th February 1997", "15th February 1997", "16th February 1997", "17th February 1997", "18th February 1997", "19th February 1997", "20th February 1997", "21st February 1997", "22nd February 1997", "23rd February 1997", "24th February 1997", "25th February 1997", "26th February 1997", "27th February 1997", "28th February 1997", "17th June 1997"];

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
getDatesInSortedOrder(dates);
function getDatesInSortedOrder(dates){
  //alert($('#test').html());
  var new_dates = [];
  var group_of_dates = {};
  $.each(dates, function( index, value ) {
    var new_val = value.split(" ");
    var dt = new Date(new_val[2], months.indexOf(new_val[1]), new_val[0].slice(0, new_val[0].length - 2))
    new_dates.push(dt)
  });

  $.each(new_dates, function( index, date ) {
    var day = date.getDate(), month = date.getMonth(), year = date.getFullYear();
    date_group = month + "_" + year
    if(group_of_dates[date_group] == undefined){
      group_of_dates[date_group] = [date];
    } else {
      var temp = group_of_dates[date_group];
      temp.push(date)
      group_of_dates[date_group] = temp;
    }
    });
  var sorted_dates = {};

  for (var key in group_of_dates) {
    sorted_dates[key] = sortDate(group_of_dates[key])
  }

  console.log(sorted_dates)
  var finalArray = [];
  for (var key in sorted_dates) {
    var dates_array = sorted_dates[key];
    if (dates_array.length > 1){
      var readableDate = dates_array[0].getDate() + "-" + dates_array[dates_array.length - 1].getDate() + " " + months[dates_array[0].getMonth()]  + " " + dates_array[0].getFullYear();
      finalArray.push(readableDate)
    } else {
      var readableDate = dates_array[0].getDate() + " " + months[dates_array[0].getMonth()]  +" " +  dates_array[0].getFullYear();
      finalArray.push(readableDate)
    }
  }

  alert(finalArray.join(", "))
}


function sortDate(dates){
   new_dates  = dates.sort(function(a,b){
      if (a > b) return 1;
      if (a < b) return -1;
      return 0;
  });
  return new_dates;
}

Jsfiddel

关于javascript - 如何在 JavaScript 中将日期列表压缩为范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361623/

相关文章:

javascript - 对这种行为感到非常困惑(返回数组的唯一元素的简单函数)

javascript - 使用 jquery 将字符串转换为 UTC 时间

javascript - 如何动态打印 iFrame

javascript - 视觉 : global v-directive working in one component but not another

date - 是否有比 UTC 更 "Date"的替代 "ambiguous"数据类型?

python - 我如何转换不同的日期 python 格式?

python - 如何按日期时间小时进行分组以在数据框中进行计算并输出为时间间隔结果?

python - python 中的日期时间差异针对夜间进行了调整

日期组件操作

php - MYSQL - 选择当前工作周的日期