gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:58:27 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com