@Christoph Menzioni utilizzando un'espressione regolare per affrontare il problema. Ecco quello che sto usando:
var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString);
var dateObject = new Date(
(+dateArray[1]),
(+dateArray[2])-1, // Careful, month starts at 0!
(+dateArray[3]),
(+dateArray[4]),
(+dateArray[5]),
(+dateArray[6])
);
E 'in alcun modo intelligente, basta configurare la regex e new Date(blah)
base alle proprie esigenze.
Edit: Forse un po 'più comprensibile in ES6 utilizzando destrutturazione:
let dateString = "2010-08-09 01:02:03"
, reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
, [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
, dateObject = new Date(year, month-1, day, hours, minutes, seconds);
Ma in tutta onestà questi giorni ho raggiungere per qualcosa come Moment
BTW punti e trattini può non come separatori di data, le barre sono a posto, quindi (ai limiti del mio test) Javascript accetteranno "2011/08/22 10:30:00 "ma non ancora (nonostante ISO 8601)" 2011-09-02 15:58:40 "che - si sostiene - è supportato in Javascript 1.8.5 su. –
La funzione Date.parse analizza la stringa della data che si trova nel formato "mm/gg/aaaa". Si prega di convertire la stringa in formato "mm/gg/aaaa" prima di applicare Parse. –
Perché non fornire la data nel formato richiesto? Lo faccio come nuovo Data ('2012 11 25 18:00:00'); e funziona! – foxybagga