10

重複の可能性:
文字列を日付形式に変換することによるJavascriptの日付ソート

私はjqueryが苦手なので、日付divをソートするために使用できる方法またはプラグインがあるかどうか疑問に思っていました. YYYY:MM:DD HH:MM:SS 形式の日付があります。以下に示すように、divで日付を表示しています。div は順序付けられていない形式であり、最新の日付を最初に並べ替えたいと考えています。

<div id="dateDiv">2012-04-15 10:25:45</div>
<div id="dateDiv">2012-04-10 19:41:08</div>
<div id="dateDiv">2012-04-20 07:00:10</div>
<div id="dateDiv">2012-04-12 16:45:50</div>

ありがとう

4

2 に答える 2

18

私はプラグインについてあまり知りません...プラグインなしで軽量な方法が必要な場合は、これを試すことができます:

html:

<div id="D">
    <div class="dateDiv">2012-04-15 10:25:45</div>
    <div class="dateDiv">2012-04-10 19:41:08</div>
    <div class="dateDiv">2012-04-20 07:00:10</div>
    <div class="dateDiv">2012-04-12 16:45:50</div>
</div>

js の場合:

var elems = $.makeArray($(".dateDiv"));
elems.sort(function(a, b) {
    return new Date( $(a).text() ) < new Date( $(b).text() );
});
$("#D").html(elems);

更新:
日付の解析に関するこの質問に答えてくれた CMS に感謝します: Date.parse が間違った結果をもたらすのはなぜですか?

function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]); //     months are 0-based
}

var elems = $.makeArray($(".dateDiv"));
elems.sort(function(a, b) {
    console.log( parseDate( $(a).text() ) );
    return parseDate( $(a).text() ) < parseDate( $(b).text() );
});
$("#D").html(elems);​

さて、これがうまくいかないなんて言わないで...へへへ

于 2012-05-17T13:51:45.710 に答える
9

これを行うには、 date.jsライブラリをこのソーター関数と組み合わせて使用​​できます。

$('#dateDiv').sortElements(function(a, b){
    return Date.parse($(a).text()) > Date.parse($(b).text()) ? 1 : -1;
});

元のリポジトリは維持されていませんが、更新されたフォークがここで進行中のようです。

于 2012-05-17T13:39:41.033 に答える