数据表中的格式日期US'MM / DD / YYYY“

时间:2018-08-23 17:06:45

标签: datatables momentjs

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>

1 个答案:

答案 0 :(得分:1)

找到了罪魁祸首。在数据中-下一行:

{
  "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格式,这使其成为另一种格式,最终使表格排序混乱。 >

下面是一行包括的小偷:

http://plnkr.co/edit/eYRVBr8P4g7Ua4Z7K6JG?p=preview

修复了上述日期格式,这是一个新的插件:

http://plnkr.co/edit/zPF9LDZjAAZeqXIJ3XOF?p=preview

正如Alan(DataTables作者)在此comment中建议的那样:

  

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

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

希望这会有所帮助。