2013-07-24 17 views
6

JavaScript'te belirli bir yıl için bir ay boyunca kaç gün listelenir?Belirli bir yıl için bir ay boyunca kaç gün listelenir?

Bildiğimiz üzere 30 gün Eylül, Nisan, Haziran ve Kasım ayları vardır. Geri kalan her şey 31, hariç Şubat, Her 28 yılda bir, Ve 29 her bir yıl içinde vardır.

Artık yıl geçirmem gerekiyor. Sevdiğiniz herhangi bir yerli yol biliyor musunuz .. ya da belki bir kütüphane .. Bir tavsiye edebilir misiniz?

cevap

9

bu

function daysInMonth(m, y) 

{ 
    m=m-1; //month is zero based... 
    return 32 - new Date(y, m, 32).getDate(); 
} 

kullanımını deneyin: çok

>> daysInMonth(2,2000) //29

+1

Oldukça şık, ama her uygulamada her zaman işe yaraması garanti ediliyor mu? Sadece stricto senso 32 ay alanı için geçersiz bir değer olarak merak ediyor. – fvu

3

Bu çalışacak varsayarak Jan=1, Feb=2 ... Dec=12

function daysInMonth(month,year) 
{ 
    return new Date(year, month, 0).getDate(); 
} 

FIDDLE

+0

hayır değil. 'Yeni Tarih (2000, 1, 0) .getDate() // 31' ve Şubat 2000'de 29 gün var –

+1

@RoyiNamir' 'yerine 2' koyuyorsunuz'' 2 Şubat’ın bir yılın 2. ayı olduğuna inanıyorum: //jsfiddle.net/eFUAm/2/ –

+0

tamam. ayın sıfır olduğuna inanıyorum biliyorum bu yüzden feb 1'dir. Cevabınızdan bahsetmelisiniz. –

0

öğrenmek için muhtemelen yerli yolu vardır, ama artık yıl algoritma kendi kendine uygulamak aslında çok zor olmadığını, bilmek güzel düşünüyorum: Elbette, sadece yazabilirsiniz

function isLeapYear(year) { 
    if (year % 400 === 0) { 
     return true; 
    } else if (year % 100 === 0) { 
     return false; 
    } else if (year % 4 === 0) { 
     return true; 
    } 
    return false; 
} 
3

sıçrama yıldır mantığı ile kombine zaten bildiklerini dayalı fonksiyonu:

// m is the month (January = 0, February = 1, ...) 
// y is the year 
function daysInMonth(m, y) { 
    return m === 1 && (!(y % 4) && ((y % 100) || !(y % 400))) ? 29 
     : [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m]; 
} 

yaşında 4 ile bölünebilir ancak 100 ile bölünemeyen 400 bölünebilen artık yıllar ise hariç.

İlgili konular