web-dev-qa-db-fra.com

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 fichier 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 est JSON et serait quelque chose comme

[
 {  
      "userId":179,
      "applicationId":"pgm-apn",
      "username":"collaborator.user3",
      "password":"password1",
      "email":"[email protected]",
      "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":"[email protected]",
      "firstName":"sherlock ",
      "lastName":"homes",
      "enabled":true,
      "userCreated":"sitepmadm",
      "userModified":"sitepmadm",
      "createdTime":1422010854246,
      "updatedTime":1422010854246
   }

Je veux afficher les dates avec la date et l'heure appropriées

15
Geo Thomas

Vous pouvez utiliser la propriété "render" pour formater votre colonne display 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();
    }
}
33
nhkhanh

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();}
            }
        ]};
18
David Sopko

j'ai créé demo en utilisant moment js et en utilisant la fonction de rendu pour convertir les données json au format requis.

jsfiddle demo

trouvez aussi 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").toISOString();
        }
    }]
});
6
TechnoCrat

J'utilise toujours moment.js ( http://momentjs.com/ ) pour traiter les dates en js.

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

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

var created = 1422010854246;
moment.utc(created, "x").toISOString();
1
jinxed_coder

{
  "render": function (data) {
              var d = new Date(data);
              return d.toLocaleString();
}

1
IamP

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() + "&nbsp;&nbsp;" +(date.getHours() < 10 ? ("0"+date.getHours()) : date.getHours())+ ":"+(date.getMinutes() < 10 ? ("0"+date.getMinutes()) : date.getMinutes()) ; 
                            //return date;
                        }
0
Suraj Gulhane

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
            },
0
Mahfuzur Rahman