jQuery tablesorter formato di data personalizzato

Attualmente utilizzo Tablesorter (un plugin jQuery) per ordinare una tabella. Sto cercando di ordinare la data nel formato MMG yyyy MMM ma sembra che non sia in grado di farlo. Devo dire che i miei input di data sono in francese in questo modo:

  • 2014 gennaio. 05
  • 2013 févr. 03
  • 2011 Marte 02

Ho provato un sacco di cose, ma non si ordina nel modo giusto. Non so se è perché le mie date di input o in francese o qualsiasi altra cosa, ma sto per rinunciare a questo.

Ecco il codice che ho usato

$.tablesorter.addParser({ id: "date", is: function (s) { return false; }, format: function (s, table) { var date = s.split(' '); var month = translateMonth(date[1]); var d = new Date(date[0], month, date[2]); console.log(d.toString()); return d.getTime(); }, type: "numeric" }); 

E

 $("#table").tablesorter({ headers: { 2: { sorter: 'date' } } }); 

E

 function translateMonth(month) { switch (month) { case "janv.": return 0; case "févr.": return 1; case "mars": return 2; case "avril": return 3; case "mai": return 4; case "juin": return 5; case "juil": return 6; case "août.": return 7; case "sept.": return 8; case "oct.": return 9; case "nov.": return 10; case "déc.": return 11; default: return -1; } } 

i miei anni e i miei giorni sono ordinati correttamente ma il problema qui sono i miei mesi

Gradirei ogni tipo di aiuto

Grazie – S

Hai ragione, non sa cosa siano quelle abbreviazioni del mese. Ci sono librerie di date là fuori che possono supportare questo tipo di cose, come moment.js che è un ottimo strumento se sei in grado di usare jquery. In caso contrario, converti le tue abbreviazioni nella cifra del mese appropriato.

 function translateMonth(month) { switch (month) { case 'janv.': return 0; case 'févr.': return 1; case 'févr.': return 2; case 'mars': return 3; case 'avril': return 4; case 'mai': return 5; case 'juin': return 6; case 'juil.': return 7; case 'août': return 8; case 'oct.': return 9; case 'nov.': return 10; case 'déc.': return 11; default: return -1; } } $.tablesorter.addParser({ id: "customParser", is: function (s) { return false; }, format: function (s) { var date = s.split(' '), month = translateMonth(date[1]); if(month >= 0) return new Date(date[0], month ,date[2]).getTime(); else return new Date().getTime(); }, type: 'numeric' }); 

Va bene, l’ho trovato. Il mio file javascript non è stato aggiornato. In secondo luogo, ho usato gli attributi delle mie celle per ottenere una data convenzionale. E sì … il vero problema qui era che dovevo affrontare file pieghevoli.

il mio codice:

 $(function () { $.tablesorter.addParser({ id: "date", is: function (s) { return false; }, type: "text", format: function (s, table, cell, cellIndex) { var tr = $(cell).parent("tr"); var date = tr.data("date"); var id = tr.data("id"); var ind = tr.data("ind"); return date + " " + id + " " + ind; } }); $("table").tablesorter({ headers: { 2: { sorter: "date" } }, sortList: [[1, 0]], widgets: ['group', 'filter'], widgetOptions: { group_collapsible: true, group_collapsed: false, group_count: false, filter_childRows: false, } }); }); $(".open-supp").click(function (e) { var detail = $(this).closest("tr").next("tr.supp"); $("tr.supp").not(supp).hide(); detail.toggle("fast"); e.preventDefault(); }); 

Grazie