2012-12-09 38 views
0

我从服务器发送日期作为字符串,如下所述,它包含日期和时间部分,如2010-12-07 17:35:04.127。 我想要的只是显示日期而不是数据表列中的时间部分,即2010-12-07。但我也希望排序发生在包括时间部分在内的完整日期 。因此,在2010年12月7日18:35:04.12创建的客户应显示在dataTable列中的 2010-12-07 17:35:04.12之上。这里是DataTable中在jquery dataTable中显示正确日期不是时间部分,但在日期和时间部分排序?

"aoColumns": [ { "mDataProp": "customerCreated","bSearchable": false, 
          "fnRender": function (o, val ) 
           { 
           var javascriptDate = new Date(o.aData["customerCreated"]); 
           javascriptDate = javascriptDate.getFullYear()+"/"+javascriptDate.getMonth()+"/"+javascriptDate.getDate(); 
           return "<div class= date>"+javascriptDate+"<div>"; 
           } 

         } ] 

我的具体日期栏的代码片段问题我面临的是: -

1)在IE和Mozilla的日期显示为NaN的/ NaN的/ NaN的。 不明白为什么?

2)在Chrome日期显示,但月份显示为1。为什么javascriptDate.getMonth()返回月份减1?

3)我不知道排序将工作,如果采取上述路线,我只显示日期部分,但希望排序发生在完整的日期,包括日期部分?

FYI 我正在使用bserverSide作为false。基本上我从服务器一次性获取数据并在客户端进行排序?

回答

1

JS个月从0开始和/日的需求,而不是 -

相关的Problem with date formats in JavaScript with different browsers

试试这个DEMO

function getFormattedDate(dString) { 
    var d = new Date(dString.split(".")[0].replace(/-/g,"/")); // assuming 2010-12-07 17:35:04.127 
    var mm = d.getMonth()+1; 
    var dd = d.getDate(); 
    if (mm<10)mm="0"+mm; 
    if (dd<10)dd="0"+dd; 
    return d.getFullYear()+"/"+mm+"/"+dd; 
} 

"aoColumns": [ { "mDataProp": "customerCreated","bSearchable": false, 
    "fnRender": function (o, val ) { 
    return "<div class= date>"+getFormattedDate(o.aData["customerCreated"])+"<div>"; 
    } 
} ] 

如果您需要太多的时间,将是

function getFormattedDate(dString) { 
    var d = new Date(dString.split(".")[0].replace(/-/g,"/")); // assuming 2010-12-07 17:35:04.127 
    var mm = d.getMonth()+1; 
    var dd = d.getDate(); 
    if (mm<10)mm="0"+mm; 
    if (dd<10)dd="0"+dd; 
    var hh = d.getHours(); 
    var min = d.getMinutes(); 
    if (hh<10) hh="0"+hh; 
    if (min<10) min="0"+min; 
    return d.getFullYear()+"/"+mm+"/"+dd+" "+hh+":"+min; 
} 
+0

感谢mplungjan。关于日期显示,它的效果很好。但排序不正确。我的意思是在2010年12月7日17:35:04.12创建的客户在之后创建的客户数据表中显示,即2010-12-07 18:20:02.16。我的意思是排序不适用于在同一日期创建的客户。看起来像它正在发生becoz我们从日期中删除时间部分。有没有一种解决方案,我可以显示不包括时间部分的日期,但排序是基于日期和时间发生的? – emilly

+0

我不知道列的排序方式。我们可以添加时间 – mplungjan