我想在 javascript 函数中按升序对日期进行排序。我的日期格式如下:3/4/2014 1300
我有以下包含日期的数组
categoriesdata.push(RecordDate);
categoriesdata.sort(function (a, b) {
var key1 = a.RecordDate;
var key2 = b.RecordDate;
if (key1 < key2) {
return -1;
} else if (key1 == key2) {
return 0;
} else {
return 1;
}
})
categories数据有以下记录
3/4/2014 1300
2/4/2014 0000
1/31/2014 1030
现在我想以这种方式对这些记录进行排序,以便我得到以下输出
1/31/2014 1030
2/4/2014 0000
3/4/2014 1300
最佳答案
您必须拆分日期字符串并使用正则表达式
或简单的split
获取各个部分
var date = "1/31/2014 1030".split(" ");
var day = parseInt(date[0].split["/"][0], 10);
var month = parseInt(date[0].split["/"][1], 10) - 1;
var year = parseInt(date[0].split["/"][2], 10);
var hours = parseInt(date[1].slice(0,2), 10);
var minutes = parseInt(date[1].slice(2,4), 10);
然后用 JavaScript 创建 Date
对象。
var dateObj = new Date(year, month, day, hour);
然后将要比较的日期转换为“自开始以来的毫秒数”
var milliseconds1 = Date.parse(dateObj)
同样地转换两个日期以毫秒为单位进行比较,现在您将拥有两个可以轻松比较的数字
将此想法合并到您的排序函数中。
categoriesdata.push(RecordDate);
categoriesdata.sort(function (a, b) {
var key1 = a.RecordDate;
var key2 = b.RecordDate;
var getTimestamp = function (dateString) {
var date = dateString.split(" ");
var day = parseInt(date[0].split["/"][0], 10);
var month = parseInt(date[0].split["/"][1], 10) - 1;
var year = parseInt(date[0].split["/"][2], 10);
var hours = parseInt(date[1].slice(0, 2), 10);
var minutes = parseInt(date[1].slice(2, 4), 10);
return Date.parse(new Date(year, month, day, hour));
}
key1 = getTimestamp(key1);
key2 = getTimestamp(key2);
if (key1 < key2) {
return -1;
} else if (key1 == key2) {
return 0;
} else {
return 1;
}
})
关于javascript - 如何在javascript中对军事格式日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294170/