2010-04-20 14 views
7

Gibt es eine Methode zur Berechnung der Anzahl der Tage in einem Monat?Tage des Monats berechnen

+2

Sicher, es ist 30,6 –

+2

Eigentlich zu bekommen, ist es näher an 30,436875, im Durchschnitt. Es gibt ((365 * 3 + 366) * 25-1) * 4 + 1 oder 146.097 Tage in 400 Jahren. – paxdiablo

Antwort

17

Ja:

Const July As Integer = 7 
Const Feb As Integer = 2 

' daysInJuly gets 31. ' 
Dim daysInJuly As Integer = System.DateTime.DaysInMonth(2001, July) 

' daysInFeb gets 28 because the year 1998 was not a leap year. ' 
Dim daysInFeb As Integer = System.DateTime.DaysInMonth(1998, Feb) 

' daysInFebLeap gets 29 because the year 1996 was a leap year. ' 
Dim daysInFebLeap As Integer = System.DateTime.DaysInMonth(1996, Feb) 

Kredit geht an MSDN.

+0

Wenn Sie nach der Anzahl der Tage suchen, funktioniert das. Wenn Sie nach einer Liste von Tagen suchen, verwenden Sie mein Beispiel unten. – NibblyPig

0
Dim d As New DateTime(2010, 4, 1) 

Dim month As Integer = d.Month 

While d.Month = month 
    Console.WriteLine(d.[Date]) 
    d = d.AddDays(1) 
End While 

Sie können Sie sich natürlich ändern, wie das Datum der Ausgabe, die es auf Ihren Willen zu formatieren.

0

Verwenden Sie ein Array: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] Fügen Sie eins zu Feb if (Jahr Mod 400 = 0) oder ((Jahr mod 4 = 0) und nicht (Jahr mod 100 = 0))

-1

Sie haben zwei einfache Lösungen:

5546>>m&1|30^(m==2)*2+(m==2&&y%4==0))) 

oder

(62648012>>m*2&3)+28+(m==2&&y%4==0))) 

wobei m die Anzahl von Monat ist und y das Jahr.

Diese Lösung ist die gleiche unten, ein Array, aber das Array ist in magischen Zahlen maskiert.

0

Um die Anzahl der Tage des laufenden Monats

Dim CurrentMonthDays As Int16 = DateTime.DaysInMonth(DateTime.Now.Year,DateTime.Now.Month)