0

我正在从服务器发送日期作为字符串,如下所述,其中包含日期和时间部分,如 2010-12-07 17:35:04.127。我想要的只是在数据表列中显示日期而不是时间部分,即 2010-12-07。但我也希望排序发生在完整的日期,包括时间部分。因此,在 2010-12-07 18:35:04.12 创建的客户应显示在 dataTable 列中的 2010-12-07 17:35:04.12 上方。这是我在数据表中的特定日期列代码片段

  "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)如果采取上述路线,我只显示日期部分但希望在包括日期部分的完整日期进行排序,我不确定排序是否有效?

仅供参考,我将 bserverSide 用作 false 。基本上我是一次性从服务器获取数据并在客户端进行排序?

4

1 回答 1

1

JS 月份以 0 开头,日期需要 / 而不是 -

与使用不同浏览器的 JavaScript 中的日期格式问题相关

试试这个演示

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;
}
于 2012-12-09T08:55:31.320 回答