javascript - 如何在javascript中对军事格式日期进行排序

标签 javascript arrays sorting

我想在 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/

相关文章:

r - 如何使用第二个向量作为平局断路器对向量进行排名?

javascript - 需要技术推荐: Web-based Database Manager

javascript - 未捕获的类型错误 : method is not a function

java - 我需要一种在列表中存储许多不同项目的方法

Javascript,数组

javascript - 将字符串中的相同字符替换为数组,但每次出现时都使用下一个条目

在 Elasticsearch 中聚合后排序

java - 使用对象的特定变量对 LinkedList 进行排序?

javascript - 如何将 Jade 变量分配给 Angular 绑定(bind)

javascript - 如何在 javascript 函数内调试 ASP