getMonth in javascript geçen ay verir


139

Sun Jul 7 00:00:00 EDT 2013 biçiminde bir tarih veren bir tarih seçici kullanıyorum. Ay Temmuz yazsa da, bir getMonth yaparsam bana bir önceki ay verir.

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

Neyi yanlış yapıyorum?


14
Evet ... sıfır indekslendi .
Elçi

2
Javascript tarihler ile aklını kaybetme. Yapabiliyorsanız Moment.js kullanın
Valamas

6
nasıl gerçek olduğuna inanamıyorum
neaumusic

Moment.js tarih yapamıyor Doğru çalışıyor. Aynı ay içinde dateDiffs yapıyorsanız sorun değil, ancak 2 farklı ay boyunca (örneğin 27-04-2018 ve 24-05-2018) yapmaya çalışın ve bu bir gün.
rozza

1
Denemek kadar bekleyin getYear()!! ;-)
James Poulose

Yanıtlar:


266

Çünkü getmonth () 0'dan başlar. İstediğinizi d1.getMonth() + 1başarmak isteyebilirsiniz.


196
Söylemeliyim ki, bir ay sıfırın endekslenmesi bir süredir gördüğüm en aptalca şey. '
LarryBud

6
getDate 1-31 verirse birileri neden 0 tabanlı istesin ki?
Abhinav Gauniyal

6
Muhtemelen yapmanız gerekecek d1.getMonth() < 12 ? d1.getMonth() + 1 : 1- aksi takdirde Aralık 13 olur, değil mi?
DanielKhan

7
@DanielKhan Hayır, çünkü Aralık 11 olacaktı, bu yüzden ona 1 eklemek doğru bir şekilde 12 yapardı. GetMonth () işlevi 11 üzerinde bir değer döndürmemelidir.
unenthusiasticuser

7
@LarryBud, mantık muhtemelen tarihin her zaman olduğu gibi sayı olarak kullanılan diğer ay bölümlerinin (ayın günü, yıl, saat, dakika, saniye ...) aksine, ay genellikle metne dönüştürülür. Tabii ki 0 tabanlı bir isimler dizisi. 40 yaşından büyük olması gereken C standart kütüphanelerinde zaten böyleydi.
jcaron

19

getMonth()işlevi sıfır indekslidir. Yapman lazımd1.getMonth() + 1

Son zamanlarda Moment.js kütüphanesini kullandım ve asla geriye bakmadım. Dene!


10

Değişkeninizi kullandığınız varsayılarak

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

Ayın doğru olması için +1 gerekir, 0'da saymaya başlar

d1.getMonth() + 1 // month 

Aksine .... bu yöntemler bir artı gerekmez 1

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

Ve dikkat edin .getDate()DEĞİLDİR.getDay()

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

Bu yardımcı olur umarım

Bu yöntemlerin tarihsel nedenlerle tutarlılığı olmadığından şüpheleniyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.