date - getMonth i javascript ger föregående månad


Jag använder en datumväljare som ger ett datum i formatet Sön Jul 7 00:00:00 EDT 2013. Även om månaden säger juli, om jag gör en getMonth, får jag föregående månad.

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

Vad gör jag för fel?

Svar #1

Eftersom getmonth() börjar från 0. Du kanske vill använda d1.getMonth() + 1 för att uppnå det du vill.

Svar #2

getMonth()-funktionen är nollindexerad. Du behöver göra d1.getMonth() + 1

Nyligen använde jag Moment.js-biblioteket och har aldrig tittat tillbaka. Prova det!

Svar #3

Förutsatt att du använder din variabel

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013");

Månad kräver +1 för att vara korrekt, den börjar räkna från 0

d1.getMonth() + 1 // month 

I kontrast.... dessa metoder behöver INTE ett plus 1

d1.getSeconds()   // seconds 
d1.getMinutes()   // minutes 
d1.getDate()      // date    

Och notera att det är .getDate() INTE .getDay()

d1.getDay()       // day of the week as a 

Hoppas detta hjälper

Jag misstänker att dessa metoder saknar konsekvens av historiska skäl

Relaterade artiklar