format json date au format mm / jj / aa avant de l’afficher dans un jquery datatable

J’essaie d’afficher des données dans un datatable et le script de table que j’utilise est

$('#userData').dataTable({ "ajax": { "url": "${rc.getContextPath()}/module/roles/users-list", "dataSrc": "", }, "columns":[ {"data": "userId"}, {"data": "applicationId"}, {"data": "username"}, {"data": "firstName"}, {"data": "userCreated"}, {"data": "createdTime"}, {"data": "updatedTime"} ], }); 

les données qui sont reçues par la table sont JSON et seraient quelque chose comme

 [ { "userId":179, "applicationId":"pgm-apn", "username":"collaborator.user3", "password":"password1", "email":"user@xample.com", "firstName":"Anthony", "lastName":"Gonsalves", "enabled":true, "userCreated":"sitepmadm", "userModified":"sitepmadm", "createdTime":1422454697373, "updatedTime":1422454697373 }, { "userId":173, "applicationId":"pgm-apn", "username":"consumer.user", "password":"password1", "email":"test@egc.com", "firstName":"sherlock ", "lastName":"homes", "enabled":true, "userCreated":"sitepmadm", "userModified":"sitepmadm", "createdTime":1422010854246, "updatedTime":1422010854246 } 

Je veux afficher les dates en tant que date / heure correcte. Actuellement, il est affiché sous la même forme dans les données JSON. Y a-t-il un moyen de convertir cela dans le datatable

Vous pouvez utiliser la propriété “render” pour formater l’affichage de votre colonne http://datatables.net/reference/option/columns.render#function .

Par exemple:

 { "data": "createdTime", "render": function (data) { var date = new Date(data); var month = date.getMonth() + 1; return (month.length > 1 ? month : "0" + month) + "/" + date.getDate() + "/" + date.getFullYear(); } } 

Pour une date date nullable, DateTime?, Vous souhaiterez utiliser une fonction de rendu différente:

  $('#userData').DataTable({ columns: [ { "data": "userId"}, {"data": "userCreated", "type": "date ", "render":function (value) { if (value === null) return ""; var pattern = /Date\(([^)]+)\)/; var results = pattern.exec(value); var dt = new Date(parseFloat(results[1])); return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();} } ]}; 

J’ai créé demo en utilisant moment js et utilisation de la fonction de rendu pour convertir les données json au format requirejs.

jsfiddle demo

trouvez également le code ci-dessous:

 testdata = [{ "id": "58", "country_code": "UK", "title": "Legal Director", "pubdate": "1422454697373", "url": "http://..." }, { "id": "59", "country_code": "UK", "title": "Solutions Architect,", "pubdate": "1422454697373", "url": "http://..." }]; $('#test').dataTable({ "aaData": testdata, "aoColumns": [{ "mDataProp": "id" }, { "mDataProp": "country_code" }, { "mDataProp": "title" }, { "mDataProp": "pubdate" }, { "mDataProp": "url" }], "columnDefs": [{ "targets": 3, "data": "pubdate", "render": function (data, type, full, meta) { console.log('hi...'); console.log(data); console.log(type); console.log(full); console.log(meta); return moment.utc(data, "x").toISOSsortingng(); } }] }); 

J’utilise toujours moment.js ( http://momentjs.com/ ) lorsqu’il s’agit de dates en js.

Les valeurs de date renvoyées sont en timestamp unix, vous devez donc les convertir.

Voici un exemple de violon: http://jsfiddle.net/fws8u54g/

 var created = 1422010854246; moment.utc(created, "x").toISOSsortingng(); 

Pour dot.net et javascript, vous pouvez simplement utiliser comme @ David Sopko

  { "data": "Date", "type": "date ", "render": function (value) { if (value === null) return ""; var pattern = /Date\(([^)]+)\)/;//date format from server side var results = pattern.exec(value); var dt = new Date(parseFloat(results[1])); return dt.getDate() + "." + (dt.getMonth() + 1) + "." + dt.getFullYear(); }, "autoWidth": true }, 
 { "render": function (data) { var d = new Date(data); return d.toLocaleSsortingng(); } 

Pour afficher l’heure avec la date, ajoutez le code ci-dessous:

 "data": 'Date' , "render": function (data) { var date = new Date(data); var month = date.getMonth() + 1; return (month.length > 1 ? month : "0" + month) + "/" + date.getDate() + "/" + date.getFullYear() + "  " +(date.getHours() < 10 ? ("0"+date.getHours()) : date.getHours())+ ":"+(date.getMinutes() < 10 ? ("0"+date.getMinutes()) : date.getMinutes()) ; //return date; }