2010-06-04 25 views

risposta

22

Vorrei prendere date.js oppure è necessario eseguire la propria funzione di formattazione.

+4

+1. Date.js è come una deliziosa torta umida –

+8

Va notato che date.js interrompe jQuery UI datepicker mentre altera il prototipo Date. jQuery core dice che non risolveranno bug relativi a questo. – SupaIrish

4
var stringDate = "Sunday, February 28, 2010"; 

var months = ["January", "February", "March"]; // You add the rest :-) 

var m = /(\w+) (\d+), (\d+)/.exec(stringDate); 

var date = new Date(+m[3], months.indexOf(m[1]), +m[2]); 

Procedimento indexOf su array è supportato solo nei browser più recenti (cioè non IE). Avrai bisogno di fare la ricerca da solo o utilizzare una delle tante librerie che forniscono la stessa funzionalità.

Anche il codice manca di controllo degli errori che dovrebbe essere aggiunto. (String non corrisponde l'espressione regolare, mesi inesistenti, ecc)

98

Se si sta eseguendo con jQuery è possibile utilizzare la funzione parsedate della biblioteca UI datepicker per convertire la stringa in una data:

var d = $.datepicker.parseDate("DD, MM dd, yy", "Sunday, February 28, 2010"); 

e poi seguire con il metodo FormatoData per arrivare al formato di stringa che si desidera

var datestrInNewFormat = $.datepicker.formatDate("mm/dd/yy", d); 

Se non si sta eseguendo con jQuery, naturalmente, la sua, probabilmente non è il miglior piano dato che avresti bisogno di base jQuery così come il modulo UI di datepicker ... meglio andare con il suggerimento stion da Segfault sopra per usare date.js.

HTH

+8

+1 per una risposta usando jquery. La risposta più vicina a questa domanda. Se stai usando jquery, non c'è bisogno di aggiungere un'altra lib. –

+3

No, non è giusto. datepicker non fa parte di jQuery. Fa parte dell'interfaccia utente di jQuery.Se hai solo la libreria principale, in sostanza stai aggiungendo un'altra lib. Se non hai o non prevedi di utilizzare l'interfaccia utente di jQuery, darei un'occhiata a Moment.js. –

+2

@Colin, questo è quello che ho interpretato "avresti bisogno di jQuery core e del modulo UI di datepicker". – isherwood

2

Se avete solo bisogno di una volta, è eccessivo per caricare un plugin.

Per una data "gg/mm/aaaa", questo funziona per me:

new Date(d.date.substring(6, 10),d.date.substring(3, 5)-1,d.date.substring(0, 2)); 

Basta invertire mese e il giorno gg/mm/aaaa, la sintassi è new Date(y,m,d)

1

Usa momento js per qualsiasi operazione di data.

https://momentjs.com/

console.log(moment("Sunday, February 28, 2010").format('MM/DD/YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>