https://communitychessclub.com/examine.php 带有 moment.js 的数据表将日期排序为字符串,而不是日期。如何获取"08/23/2018"的样本日期以正确排序?也就是说,我想对"mm/dd/yyyy"进行排序。我根本无法让这个工作。
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
<script src="js/dataTables.keepConditions.min.js"></script>
<script>
$.fn.dataTable.moment = function ( format, locale ) {
var types = $.fn.dataTable.ext.type;
// Add type detection
types.detect.unshift( function ( d ) {
return moment( d, format, locale, true ).isValid() ?
'moment-'+format :
null;
} );
// Add sorting method - use an integer for the sorting
types.order[ 'moment-'+format+'-pre' ] = function ( d ) {
return moment( d, format, locale, true ).unix();
};
};
</script>
<script>
$(document).ready(function() {
$.fn.dataTable.moment( 'MM/DD/YYYY' );
$('#cccr').DataTable( {
"ajax": "assets/games.ajax",
"pageLength": 25,
"order": [[ 8, "desc" ]],
"columns": [
{ "data": "Date", "width": "7rem", },
{ "data": "Event" },
{ "data": "ECO" },
{ "data": "White" },
{ "data": "WhiteElo" },
{ "data": "Black" },
{ "data": "BlackElo" },
{ "data": "Result" },
{ "data": "game", visible : false }
]
} );
} );
</script>
找到了罪魁祸首。它在数据中 - 以下行:
{
"game": "5533",
"Date": "05/1/2010",
"Event": "RCC FIDE RR #2",
"ECO": "C56",
"White": "Nikolayev, Igor (FM)",
"WhiteElo": "2367",
"Black": "Jones, Aaaron",
"BlackElo": "1966",
"Result": "1-0"
},
您有DD
要阅读的格式,但此处的日期是格式D
,这使它成为一种不同的格式,最终弄乱了表格排序。
这是一个 plunkr,包括上面的行:
http://plnkr.co/edit/eYRVBr8P4g7Ua4Z7K6JG?p=preview
修复上述日期格式,这里有一个新的 plunkr:
http://plnkr.co/edit/zPF9LDZjAAZeqXIJ3XOF?p=preview
正如Alan(DataTables作者(在此评论中建议的那样:
目前,该插件仅支持每列中的一种格式。如果需要在单个列中支持两种或多种格式,则可以修改。
对所有日期使用通用格式将帮助您解决问题。
希望这有帮助。