使用AM PM排序日期时间秒

时间:2018-09-26 00:29:25

标签: jquery momentjs

我对日期排序有问题。我试过了,但是没有用。我也在这里张贴我的小提琴。有人可以帮助我编辑我的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;
};

1 个答案:

答案 0 :(得分:0)

您为AMPM使用了错误的令牌,应该使用aA,请参阅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>

希望我进一步推动了你。