我的日期格式如下
[
["First Name", "10 Sep. 2017 2:00 PM"],
["First Name", "10 Sep. 2017 2:00 PM"],
["First Name", "10 Sep. 2017 1:00 PM"],
["First Name", "10 Sep. 2017 8:00 AM"],
["First Name", "9 Sep. 2017 2:00 PM"],
["First Name", "9 Sep. 2017 2:00 PM"],
["First Name", "9 Sep. 2017 1:00 PM"],
["First Name", "9 Sep. 2017 8:00 AM"]
]
并希望这是输出:
[
["First Name", "10 Sep. 2017 8:00 AM"],
["First Name", "10 Sep. 2017 1:00 PM"],
["First Name", "10 Sep. 2017 2:00 PM"],
["First Name", "10 Sep. 2017 2:00 PM"],
["First Name", "9 Sep. 2017 8:00 AM"],
["First Name", "9 Sep. 2017 1:00 PM"],
["First Name", "9 Sep. 2017 2:00 PM"],
["First Name", "9 Sep. 2017 2:00 PM"]
]
注意日期是如何排序的,但时间是按时间顺序改变的。换句话说,时代逆转了。我怎样才能做到这一点?这是我之前的代码,我必须生成第一个样本数组
function sortTable(data) {
return sortTableHelper(data);
function sortTableHelper(data) {
data = data.sort((elem1, elem2) => {
var date1 = moment(elem1[1], 'D MMM YYYY h:m A')
, date2 = moment(elem2[1], 'D MMM YYYY h:m A');
if (date1.isAfter(date2)) return 1;
return -1;
});
return data;
}
}
如何修改现有的排序代码,我必须按时间顺序排列时间?
答案 0 :(得分:1)
反转返回代码,使结果呈升序而非降序:
if (date2.isAfter(date1)) return 1;
if (date1.isAfter(date2)) return -1;
return 0;
注意我更改了代码,以便在项目相同时返回0.
答案 1 :(得分:0)
您必须按日期排序,无需按小时数和小时数来获得所需结果,例如:
var input = [["First Name", "10 Sep. 2017 2:00 PM"], ["First Name", "10 Sep. 2017 2:00 PM"], ["First Name", "10 Sep. 2017 1:00 PM"], ["First Name", "10 Sep. 2017 8:00 AM"], ["First Name", "9 Sep. 2017 2:00 PM"], ["First Name", "9 Sep. 2017 2:00 PM"], ["First Name", "9 Sep. 2017 1:00 PM"], ["First Name", "9 Sep. 2017 8:00 AM"]];
function sortTable(data) {
return sortTableHelper(data);
function sortTableHelper(data) {
return data.sort((a, b) => {
var dateA = new Date(a[1]);
var dateB = new Date(b[1]);
return dateA.getHours() - dateB.getHours() + dateB.setHours(0) - dateA.setHours(0);
});
}
}
console.log(sortTable(input));

注意:在没有momentjs
的情况下完成。