2013-07-07 11 views
5

Używam wtyczki jquery datatables.net i zapełnianie danych przez asp.net mvc4.Format wyświetlania daty Datatables.net

Jedną z moich kolumn jest format daty. Interesuje mnie zmiana formatu wyświetlania, ale nie zmiana typu kolumny z daty na ciąg.

obecnie używam domyślnego inicjalizacji:

$('#data-table').dataTable(); 

mój 4 kolumna jest data „Data utworzenia” i jest obecnie wyświetlany jako „7/07/2013 9:38:11 P.M.” Chciałbym, aby było wyświetlane jako "7/07/2013" lub "7 lipca 2013".

Pomyślałem, że było to stosunkowo łatwe zadanie, ale nie byłem w stanie znaleźć odpowiedzi, której szukam.

Chciałbym uniknąć dodatkowych wtyczek, jeśli to możliwe. Czy istnieje prosty sposób, którego mi brakuje?

+0

Zaleca się pominięcie linii "Dzięki" (http://meta.stackexchange.com/q/2950/172431), a znaczniki "datatables" nie są zalecane (http: //meta.stackexchange. com/q/128285/172431). – madth3

Odpowiedz

15

Oto, co wymyśliłem. Używając tego sposobu renderowania, mogę manipulować sposobem, w jaki data jest wyświetlana tak, jak chcę.

$('#data-table').dataTable({ 
    "aoColumnDefs": [ 
     { 
      "aTargets": [0], 
      "bSearchable": false, 
      "sType": 'date', 
      "fnRender": function (oObj) { 
       var javascriptDate = new Date(oObj.aData[0]); 
       javascriptDate = javascriptDate.getDate()+"/"+(javascriptDate.getMonth()+1)+"/"+javascriptDate.getFullYear(); 
       return "<div class='date'>"+javascriptDate+"<div>"; 
      } 
     } 
    ] 
}); 

Mam nadzieję, że będzie to przydatne dla innych ...

+0

Czy zmienia czwartą kolumnę, jak podano w pytaniu lub 0, jak w odpowiedzi? – zygimantus

+1

@zygimantus, czy to ma znaczenie? Odpowiedź (powinna) dać ci zrozumienie, jak radzić sobie z datami, bez względu na to, który numer kolumny. – PostureOfLearning

0

Jeśli używasz zerowalne DateTime? będziesz chciał użyć innej funkcji renderingu:

 $('#users-tbl').DataTable({ 
     columns: [ 
      { "data": "ID", "visible" : false}, 

      {"data": "MyDateField", 
      "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

czy za pomocą starszej wersji wtyczki lub najnowszą, tynku funkcja jest droga. Od tego momentu staje się pytaniem nie tyle o datatables (który nie robi żadnego formatowania) i jak sformatować datę w JavaScript.

W tym celu polecam znakomite moment.js library (rockowe, ~ 30k gwiazd na githubie, 100k + testy jednostkowe, prawie wszystko, co trzeba zrobić, aby poradzić sobie z czasem w js).