2013-09-04 17 views
48

Sto usando un datepicker che dà una data nel formato dom 7 luglio 00:00:00 EDT 2013. Anche se il mese dice luglio, se faccio un getMonth, mi dà il il mese scorso.getMonth in javascript fornisce il mese scorso

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013"); 
d1.getMonth());//gives 6 instead of 7 

Cosa sto sbagliando?

+7

Sì ... è [zero indicizzato] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth). – Emissary

+1

6 è il 0 luglio –

+2

Non perdere la testa con le date in javascript. Usa Moment.js se puoi –

risposta

93

Perché getmonth() inizia da 0. Si consiglia di avere d1.getMonth() + 1 per ottenere ciò che si desidera.

+48

Devo dire che avere un mese numero zero indicizzato è la cosa più stupida che ho visto da un po '. ' – LarryBud

+1

perché qualcuno lo vorrebbe 0 basato se getDate dà 1-31? –

+2

Molto probabilmente dovresti fare 'd1.getMonth() <12? d1.getMonth() + 1: 1' - altrimenti dicembre sarebbe 13, no? – DanielKhan

8

getMonth() la funzione è indicizzata in base zero. Devi fare d1.getMonth() + 1

Recentemente ho usato la libreria Moment.js e non ho mai guardato indietro. Provalo!

Problemi correlati