Вы используете неправильный токен для AM
и PM
, вы должны использовать a
или A
, см. documentation
.
Ваш оператор возврата в функции sortAscending
не ошибочен, но его можно минимизировать всего за return dateA.isBefore(dateB) ? 1 : 0;
.
Вот рабочий пример:
function sortAscending(a, b) {
const dateA = moment($(a).find('.year').text(), 'DD/MM/YYYY hh:mm:ss a');
const dateB = moment($(b).find('.year').text(), 'DD/MM/YYYY hh:mm:ss a');
return dateA.isBefore(dateB) ? 1 : 0;
};
$(document).ready(function() {
$('#wrapper .cards').sort(sortAscending).appendTo('#wrapper');
});
<div id="wrapper">
<!-- one element -->
<div class="cards">
<span class="display-number">01</span>
<span class="year">21/07/2012 10:25:10 AM</span>
</div><!-- element -->
<!-- one element -->
<div class="cards">
<span class="display-number">02</span>
<span class="year">21/07/2012 10:25:23 AM</span>
</div><!-- element -->
<!-- one element -->
<div class="cards">
<span class="display-number">03</span>
<span class="year">21/07/2012 10:25:45 PM</span>
</div><!-- element -->
<!-- one element -->
<div class="cards">
<span class="display-number">04</span>
<span class="year">21/07/2012 10:25:08 PM</span>
</div><!-- element -->
<!-- one element -->
<div class="cards">
<span class="display-number">05</span>
<span class="year">21/07/2012 10:25:58 AM</span>
</div><!-- element -->
</div> <!--wrapper-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
Надеюсь, я подтолкнул вас дальше.