在数据表中格式化日期美国"月/日/年"



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作者(在此评论中建议的那样:

目前,该插件仅支持每列中的一种格式。如果需要在单个列中支持两种或多种格式,则可以修改。

对所有日期使用通用格式将帮助您解决问题。

希望这有帮助。

最新更新