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の上に表示される必要があります。これが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)日付部分だけを表示している上記のルートを使用した場合、並べ替えが機能するかどうかわかりませんが、日付部分を含む完全な日付に並べ替えを実行したいですか?

参考までに、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 に答える