我对日期排序有问题。我试过了,但是没有用。我也在这里张贴我的小提琴。有人可以帮助我编辑我的fiddle。
function sortAscending(a, b) {
const dateA = moment($(a).find('.year').text(), 'DD/MM/YYYY hh:mm:ss gm');
const dateB = moment($(b).find('.year').text(), 'DD/MM/YYYY hh:mm:ss gm');
return dateA.isBefore(dateB) ? 1 : dateA.isAfter(dateB) ? -1 : 0;
};
答案 0 :(得分:0)
您为AM
和PM
使用了错误的令牌,应该使用a
或A
,请参阅documentation
。
您在
sortAscending
函数中的return语句没有错,但是可以在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>
希望我进一步推动了你。