Сортировка даты jQuery

Возможный дубликат:
Сортировка дат Javascript путем преобразования строки в формат даты

Я плохо разбираюсь в jquery, поэтому мне было интересно, есть ли способ или плагин, который я могу использовать для сортировки дат. У меня есть дата в ГГГГ: MM: DD HH: MM: формат SS. Я показываю дату в divs, как показано ниже. Divs находятся в неупорядоченном формате, и я хочу их отсортировать в первую дату.

<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>

Спасибо

Ответ 1

Я не знаю много о плагинах... хотя, если вы хотите легкий метод веса без плагинов, вы можете попробовать следующее:

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);

UPDATE:
Благодаря 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);​

Теперь, не говорите мне, что это не работает... hehe

Ответ 2

Вы можете использовать библиотеку date.js в сочетании с this для этого:

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

Исходное репо не поддерживается, но обновленная версия его, похоже, выполняется здесь.