2015-02-26 11 views
12

Próbuję wyświetlić niektóre dane w elementu datatable i skrypt tabeli używam jestdata json w formacie mm/dd/yy przed wyświetleniem w jquery elementu datatable

$('#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"} 
     ], 

    }); 

dane, które jest otrzymanych przy stole jest json i byłoby coś

[ 
{ 
     "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 
    } 

chcę wyświetlić daty jako właściwego datetime.Currently jest uzyskiwanie wyświetlane jako teh samej użądleniu w data.Is tam json dowolny sposób przekonwertować że w datatable

Odpowiedz

23

Można użyć "render" własność sformatować wyświetlanie kolumny http://datatables.net/reference/option/columns.render#function.

Na przykład:

{ 
    "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(); 
    } 
} 
+0

To działa ... dzięki .... czy istnieje sposób mogę uzyskać datę w następującym formacie '02/12/2015 18:26 23' ..... z dokładnym czasem –

+1

Sprawdź date.getHours(), date.getMinutes(), date.getSeconds(). – nhkhanh

+0

dziękuję, ale z jakiegoś powodu nie działa –

0

Zawsze używam pliku moment.js (http://momentjs.com/) do obsługi dat w js.

Zwrócone wartości dat są w uniksowym znaczniku czasu, więc należy je skonwertować.

Oto skrzypce próbki: http://jsfiddle.net/fws8u54g/

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

Stworzyłem demo użyciu moment js i korzystanie z funkcji renderowania do konwersji danych json w wymaganym formacie.

jsfiddle demo

również znaleźć kod poniżej:

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(); 
     } 
    }] 
}); 
10

Dla wartości pustych czas data, DateTime ?, będziesz chciał użyć innej funkcji renderowania:

 $('#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();} 
      } 
     ]}; 
0

Dla kropką. net i javascript, możesz po prostu użyć jak @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

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