1

タイムスタンプ列の降順で 2 次元配列を並べ替えようとしています。この列 (インデックス 11) の形式は、「yyyy-MM-dd HH:mm:ss」です。私は複数のことを試しました。私が読んだトピックによると、このコードは機能するはずです:

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

前もって感謝します!

4

2 に答える 2

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

于 2012-06-25T12:39:23.743 に答える
1

それらを比較するのに完全な形式の文字列を既に取得しているので、日付の解析を完全にスキップします。

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

ただし、完全を期すために、等しい文字列の場合は 0 を返す必要があります

于 2012-06-25T12:44:57.353 に答える