在jquery dataTable中显示正好日期而不是时间部分,但是在日期和时间部分上进行排序?

时间:2012-12-09 08:47:02

标签: javascript jquery-ui datetime datatables

我将日期作为字符串从服务器发送,如下所述,其中包含日期和时间部分,如2010-12-07 17:35:04.127。 我想要的只是在数据表栏中显示日期而不是时间部分,即2010-12-07。但我也希望排序发生 在完整的日期,包括时间部分。因此,在2010-12-07 18:35:04.12创建的客户应显示在上方 2010-12-07 17:35:04.12在dataTable列中。这是我在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 个答案:

答案 0 :(得分: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;
}