2012-06-25 111 views
1

我想按时间戳列递减排序二维数组。该列表(索引11)格式为:'yyyy-MM-dd HH:mm:ss'。我已经尝试了很多东西。根据我已阅读的主题,此代码应该工作:Javascript比较时间戳

List.sort(function(x, y){ 
    return Date.parse(y[11]) - Date.parse(x[11]); 
}); 

提前谢谢!

回答

5

这将适用于支持最新定义的输入格式Date.parse(在ES5之前,它只是“解析任何Date#toString吐出”)的最新浏览器。

虽然从来没有只具备,旧的浏览器将与/,而不是-在日期支持的话,那么:

List.sort(function(x, y){ 
    return Date.parse(y[11].replace(/-/g, '/')) - Date.parse(x[11].replace(/-/g, '/')); 
}); 

你的目标浏览器始终测试,当然,因为这再次从未指定。

例如,在IE8和更早版本:

display(Date.parse("2012-06-01 14:22:17")); 

...是NaN,但:

display(Date.parse("2012/06/01 14:22:17")); 

...是1338556937000

+1

非常感谢。浪费了这么多时间在这个oneliner。你让我今天一整天都感觉很好! – Hazaart

+0

@ user1365889:不用担心,很高兴帮助! Best, –

1

既然你已经得到了串在一个完美的格式,对它们进行比较,我会跳过日期解析干脆:

List.sort(function(x, y){ 
    return y[11] > x[11] ? 1 : -1; 
}); 

虽然完整性0应该等于字符串

的情况下被退回
+0

+1非常好的一点,但我会展示完整版本,并缓存访问权限(因为您需要执行两次)。 –