javascript - 通过 JavaScript 对表中的日期进行排序

标签 javascript date sorting

好的,我有一个 JavaScript 代码,可以在 HTML 表中按日期对行进行排序。 现在我所做的是将日期转换为时间戳并通过 native sort() javascript 函数对它们进行排序,但似乎排序不正确。问题是什么?带时间戳的日期排序是否不正确?

这是我到目前为止所做的

var asc = true;

    function sortTable() {
        var tbl = document.getElementById("mytable").tBodies[0];
        var store = [];
        for (var i = 0, len = tbl.rows.length; i < len; i++) {
            var row = tbl.rows[i];
            var rowdatedata = row.cells[1].textContent;
            var rowdatesplit = rowdatedata.split('/');
            var rowdatetimestamp = Math.round(new Date(parseInt(rowdatesplit[0]), parseInt(rowdatesplit[1]) - 1, parseInt(rowdatesplit[2]), 0, 0, 0).getTime() /1000);
            if (!isNaN(rowdatetimestamp)) store.push([rowdatetimestamp, row]);
        }

        if (asc) {
            store.sort(function(x, y) {
                return x[0] - y[0];
            });
            document.getElementById('dateCol').textContent = 'Date ↑';
            asc = false;
        }
        else {
            store.sort(function(x, y) {
                return y[0] - x[0];
            });
            document.getElementById('dateCol').textContent = 'Date ↓';
            asc = true;
        }

        for (var i = 0, len = store.length; i < len; i++) {
            var idno = i + 1;
            store[i][1].cells[0].textContent = idno.toString();
            tbl.appendChild(store[i][1]);
        }
        store = null;
    }

http://jsfiddle.net/laupkram/kCxKn/

注意:只需单击“日期”标题即可排序

升序结果

ID  Date ↑  Name
1   2012/08/15  Lerry
2   2012/03/16  Ansley
3   2012/05/18  Robinson
4   2012/10/05  Mp

降序排列结果

ID  Date ↓  Name
1   2012/10/05  Mp
2   2012/05/18  Robinson
3   2012/03/16  Ansley
4   2012/08/15  Lerry

最佳答案

问题在于 parseInt 是如何工作的,如果数字以 0 开头,它会将其视为八进制数。您必须执行 parseInt(value, 10) 以确保十进制转换。

关于javascript - 通过 JavaScript 对表中的日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12968886/

相关文章:

JavaScript 围绕大括号拆分

javascript - Angular 指令从 Controller 访问模板元素

linux - 在unix中转换任何日期格式

ORDER BY A*B 的 MySQL 索引

java - 顺序很少变化的快速排序

JavaScript方法和属性调用区别混淆

javascript - 超时后无法删除新添加的 HTML 元素

java - 在java中接受日期类型命令行参数

mysql - 如何将 yyyy/mm/dd 转换为 dd/mm/yyyy?

arrays - 使用 lodash 按值(整数)对数组进行排序