日期类型mm/dd/yyyy的jquery数据表排序插件hh:mmAM/PM

日期类型mm/dd/yyyy的jquery数据表排序插件hh:mmAM/PM,jquery,jquery-datatables,Jquery,Jquery Datatables,真的被困在大问题上了。我需要对日期列进行排序。但日期格式为“mm/dd/yyyy hh:mmAM/PM”。我一直试到 jQuery.fn.dataTableExt.oSort['uk_date-asc'] = function(a,b) { var ukDatea = $(a).text().split('/'); var ukDateb = $(b).text().split('/'); var x = (ukDatea[2] + ukDatea[0] + u

真的被困在大问题上了。我需要对日期列进行排序。但日期格式为“mm/dd/yyyy hh:mmAM/PM”。我一直试到

jQuery.fn.dataTableExt.oSort['uk_date-asc']  = function(a,b) { 
    var ukDatea = $(a).text().split('/'); 
    var ukDateb = $(b).text().split('/'); 

    var x = (ukDatea[2] + ukDatea[0] + ukDatea[1]) * 1; 
    var y = (ukDateb[2] + ukDateb[0] + ukDateb[1]) * 1; 
     console.log("here");
    return ((x < y) ? -1 : ((x > y) ?  1 : 0)); 
}; 

jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) { 
    var ukDatea = $(a).text().split('/');
    var ukDateb = $(b).text().split('/'); 

    var x = (ukDatea[2] + ukDatea[0] + ukDatea[1]) * 1; 
    var y = (ukDateb[2] + ukDateb[0] + ukDateb[1]) * 1; 

    return ((x < y) ? 1 : ((x > y) ?  -1 : 0)); 
} 
jQuery.fn.dataTableExt.oSort['uk_date-asc']=函数(a,b){
var ukDatea=$(a).text().split('/');
var ukDateb=$(b).text().split('/');
变量x=(ukDatea[2]+ukDatea[0]+ukDatea[1])*1;
变量y=(ukDateb[2]+ukDateb[0]+ukDateb[1])*1;
console.log(“此处”);
回报率((xy)?1:0);
}; 
jQuery.fn.dataTableExt.oSort['uk_date-desc']=函数(a,b){
var ukDatea=$(a).text().split('/');
var ukDateb=$(b).text().split('/');
变量x=(ukDatea[2]+ukDatea[0]+ukDatea[1])*1;
变量y=(ukDateb[2]+ukDateb[0]+ukDateb[1])*1;
回报率((xy)?-1:0);
} 

但是现在我不知道如何包含时间。请大家帮帮我。

如果格式是
mm/dd/yyyy hh:mmAM/PM
,那么这个格式成为兼容格式所需要的就是在分钟
mm
AM
/
PM
之间插入一个空格。因此,如果执行此操作,可以使用
Date.parse()
返回的值来比较日期,包括时间:

jQuery.fn.dataTableExt.oSort['uk_date-pre'] = function(a) { 
    a = a.slice(0,-2)+' '+a.slice(-2);
    var date = Date.parse(a);
    return typeof date === 'number' ? date : -1;
}    
jQuery.fn.dataTableExt.oSort['uk_date-asc'] = function(a,b) { 
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
} 
jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) { 
    return ((a < b) ? -1 : ((a > b) ? -1 : 0));
} 
jQuery.fn.dataTableExt.oSort['uk_date-pre']=函数(a){
a=a.slice(0,-2)+''+a.slice(-2);
var date=date.parse(a);
返回日期类型=='number'?日期:-1;
}    
jQuery.fn.dataTableExt.oSort['uk_date-asc']=函数(a,b){
回报率((ab)?1:0);
} 
jQuery.fn.dataTableExt.oSort['uk_date-desc']=函数(a,b){
回报率((ab)?-1:0);
} 
请参见演示->

演示使用以下时间戳:

2011年1月27日晚上10:20
2011年1月27日晚上10:19
2011年1月27日上午10:19
2014年10月13日下午4:10
2011年12月4日上午11:20
2013年10月13日下午4:20
2012年1月8日晚上10:20
2014年10月7日上午7:00
2012年1月8日晚上10:20
2014年10月7日上午7:00


我必须使用mm/dd/yyyy格式进行格式化和排序,所以我必须做一些更改

 $("#tblSearch").DataTable({
        "processing": true, // for show progress bar       
        "filter": false, // this is for disable filter (search box)    
        "orderMulti": false, // for disable multiple column at once
        "bDestroy": true,
        "order": [[1, "asc"]],
        data: data,
        "columns": [
            


        ],
        "language": {
            "emptyTable": "We couldn't find any result for the search"
        },
        "columnDefs": [
            
            {
                data: "date", "sType": "date-mmddyyyy", className: 'text-center', targets: [0]
            , "mRender": function (d, type, full) {
                d = new Date(d);
                month = '' + (d.getMonth() + 1),
                    day = '' + d.getDate(),
                    year = d.getFullYear();

                if (month.length < 2)
                    month = '0' + month;
                if (day.length < 2)
                    day = '0' + day;

                return [month, day, year].join('/');
            }  }
        ],
    });
    jQuery.extend(jQuery.fn.dataTableExt.oSort, {
        "date-mmddyyyy-pre": function (a) {
            var dateFormat = a.split('/');
            return (dateFormat[2] + dateFormat[0] + dateFormat[1]) * 1;
        },

        "date-mmddyyyy-asc": function (a, b) {
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        },

        "date-mmddyyyy-desc": function (a, b) {
            return ((a < b) ? 1 : ((a > b) ? -1 : 0));
        }
    });
$(“#tblSearch”).DataTable({
“处理”:true,//用于显示进度条
“筛选器”:false,//这是用于禁用筛选器(搜索框)
“orderMulti”:false,//用于一次禁用多个列
是的,
“订单”:[[1,“asc”],
数据:数据,
“栏目”:[
],
“语言”:{
“emptyTable”:“我们找不到任何搜索结果”
},
“columnDefs”:[
{
数据:“日期”,“样式表”:“日期mmddyyyy”,类名:“文本中心”,目标:[0]
,“mRender”:功能(d,类型,完整){
d=新日期(d);
月份=“”+(d.getMonth()+1),
日期=“”+d.getDate(),
year=d.getFullYear();
如果(月长<2)
月份='0'+月份;
如果(日长<2)
天='0'+天;
return[月、日、年]。加入('/');
}  }
],
});
extend(jQuery.fn.dataTableExt.oSort{
“日期mmddyyyy pre”:函数(a){
var dateFormat=a.split('/');
返回(dateFormat[2]+dateFormat[0]+dateFormat[1])*1;
},
“日期mmddyyyy asc”:函数(a,b){
回报率((ab)?1:0);
},
“日期mmddyyyy desc”:函数(a,b){
回报率((ab)?-1:0);
}
});

could很高兴看到一个输入/列的示例。是否为mm/dd/yyyy hh:mmAM/PM,在mm和AM/PM之间没有空格?比如…
12:56上午
或者
12:56上午
?嘿@davidkonrad。很抱歉,我现在不能给你截图,因为我不在办公室…但是没有空间…例如13/1o/2014 4:00pm谢谢。它可以工作,但我必须输入日期=='number'?日期:-1,改为返回日期。但是我有一个问题,它是如何识别它是在mm/dd/yyyy还是dd/mm/yyyy..再次感谢欢迎您!我不太明白你所说的“它可以工作,但我必须输入日期==='number'?日期:-1,返回日期”的意思是什么“这个想法是返回一个数字,即使
date.parse
失败,否则函数将返回
NaN
@ntstha”,但我有一个问题,它如何识别它是在mm/dd/yyyy还是dd/mm/yyyyyy中”我认为,
date.parse
无法识别不同的日期格式,它只是尝试识别日期字符串是否与它可以识别的多种格式中的任何一种匹配。