2011-12-01 12 views

risposta

9

No, questo è viceversa: si sta definendo la data come se fosse in gennaio.

Vedi the documentation on Date():

mese - Valore intero che rappresenta il mese, a cominciare da 0 per gennaio a 11 per dicembre.

È stato fornito 12, quindi è stato considerato come 0 (gennaio).

Se è necessaria una prova , vedere modified version of the script, showing the whole date and time.

+0

Grazie !!! OMG Sono un ritardato, inoltre, ho notato la sua uscita il 24 anziché il 25 è che causa il timestamp è 00:00? – Baconbeastnz

+0

@Baconbeastnz: Credo che questo specifico problema sia il risultato di quanto segue: si sta creando la data così come lo era l'ora locale, ma si sta emettendo l'ora UTC. Vedi [risultato dettagliato per UTC e ora locale con ore incluse] (http://jsfiddle.net/3CpXz/12/). È stato d'aiuto? – Tadeck

+0

@Baconbeastnz: In pratica sei da qualche parte nell'emisfero orientale e, a causa di quella UTC, il tempo è effettivamente precedente (se si può dire questo). – Tadeck

2

Dicembre è 11 nell'oggetto Data. Dovrai sottrarre 1 per renderlo 0-indexed.

http://www.w3schools.com/jsref/jsref_getutcmonth.asp

+2

Eviterò la tua risposta, poiché punta OP nella giusta direzione (come la risposta di @ Gabe e la mia), ma non lo farò a causa della fonte di informazioni a cui hai fatto riferimento. Si prega di consultare [W3Fools.com] (http://w3fools.com/) per spiegazioni dettagliate e ragioni. – Tadeck

+0

È ancora preciso: P – jzila

+0

No, non lo è, credo :) Vedere [Data object docs] (http://www.w3schools.com/jsref/jsref_obj_date.asp) e [Esercitazione oggetto Date JS] (http: //www.w3schools.com/js/js_obj_date.asp) - ** nessuno ** di loro menziona effettivamente che 'new Date()' dovrebbe essere dato il numero del mese che inizia con '0' per January (e' 11' per dicembre). Il link che hai fornito menziona solo i valori corretti per 'getUTCMonth()', non per il costruttore dell'oggetto Date. Quel collegamento ha anche 'var month = new Array (12);' nel suo esempio, che non è una buona pratica. W3Schools sono pieni di imprecisioni :( – Tadeck

7

Avete notato che la stampa 2012 per l'anno? Il problema è che utilizza un mese a 0, quindi pensa che il mese 12 di quest'anno sia in realtà il 0 ° mese del prossimo anno. In altre parole, 0 è gennaio e 11 è dicembre, quindi 12 è il prossimo gennaio.

è necessario sottrarre 1 a partire dal mese leggibile:

var d = new Date(exploded[0], exploded[1] - 1, exploded[2]); 

Se cambio il programma a questo:

var exploded = "2011-12-25".split('-'); 
var d = new Date(exploded[0], exploded[1] - 1, exploded[2]); 
document.write(d.toString()); 

Esso stampa: Sun Dec 25 00:00:00 EST 2011

+0

che restituisce year2011 month11 day24 che è errato anche:/ – Baconbeastnz

+0

infatti se lo modifico http://jsfiddle.net/3CpXz/, anche solo toString() non funziona – Baconbeastnz

+1

@Baconbeastnz Questo è dovuto al fatto che 'getUTCMonth 'è anche 0-11. Prova:' "month" + (d.getUTCMonth() + 1) ' –