[英]Javascript Sort by Date
I have a JavaScritpt Date sorting question. 我有一个JavaScritpt日期排序问题。 I have an array of up to 24 dates that I need to sort in descending order. 我有多达24个日期的数组,需要按降序排序。 The dates were formatted in a full date format. 日期以完整日期格式格式化。 I successfully converted to a mm/dd/yyyy. 我成功转换为mm / dd / yyyy。 I realized that I cannot use sort and I believe I need to run a comparisons of sort. 我意识到我无法使用排序,并且我相信我需要进行排序比较。
My dates appear as below 我的日期显示如下
eventDatesArrray = ,11/30/2014,12/31/2018,12/31/2013,10/11/2016,10/12/2015
I did reference Sort Javascript Object Array By Date . 我确实引用了按日期排序Javascript对象数组 。 My apologies, but I do not believe I completely understand how it works since the I continue to receive an error message stating that I am not passing the parameters. 抱歉,我不完全理解它的工作原理,因为我继续收到一条错误消息,指出我没有传递参数。 Not certain how to pass a and b to this function. 不确定如何将a和b传递给此函数。
var sortedEventDates = eventDatesArrray .sort(function(a, b) {
return a>b ? -1 : a<b ? 1 : 0;
});
Thank you in advance for your help. 预先感谢您的帮助。 Allison 艾莉森
If dates are strings: 如果日期是字符串:
dates = ["10/12/2014", "12/12/2015", "12/31/2015", "14/08/2015"]
dates.sort(function(a, b) {
var parseDate = function parseDate(dateAsString) {
var dateParts = dateAsString.split("/");
return new Date(parseInt(dateParts[2], 10), parseInt(dateParts[1], 10) - 1, parseInt(dateParts[0], 10));
};
return parseDate(b) - parseDate(a);
});
["12/31/2015", "12/12/2015", "14/08/2015", "10/12/2014"] [“ 12/31/2015”,“ 12/12/2015”,“ 14/08/2015”,“ 10/12/2014”]
Or in ES6 : 或在ES6中:
var eventDatesArrray = ["11/30/2014","12/31/2018","12/31/2013","10/11/2016","10/12/2015"];
var dates = eventDatesArrray.map(elem => new Date(elem)).sort((a,b) => a-b);
console.log(dates); //[ Tue Dec 31 2013 00:00:00 GMT+0100 (Paris, Madrid),
// Sun Nov 30 2014 00:00:00 GMT+0100 (Paris, Madrid),
// Mon Oct 12 2015 00:00:00 GMT+0200 (Paris, Madrid (heure d’été)),
// Tue Oct 11 2016 00:00:00 GMT+0200 (Paris, Madrid (heure d’été)),
// Mon Dec 31 2018 00:00:00 GMT+0100 (Paris, Madrid) ]
You could use this as a custom comparator function: 您可以将其用作自定义比较器函数:
function compare (a, b) {
partsA = a.split("/");
partsB = b.split("/");
if (partsA[2] > partsB[2]) {
return -1;
} else if (partsA[2] < partsB[2]) {
return 1;
} else {
if (partsA[1] > partsB[1]) {
return -1;
} else if (partsA[1] < partsB[1]) {
return 1;
} else {
if (partsA[0] > partsB[0]) {
return -1;
} else if (partsA[0] < partsB[0]) {
return 1;
} else {
return 0;
}
}
}
}
Then call eventDatesArray.sort(compare);
然后调用eventDatesArray.sort(compare);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.