Aufgabe: "Schreibe ein JScript Funktion, die die Anzahl der Tages eines bestimmten Monates zurückgibt und Schaltjahre berücksichtigt."
Der erste Ansatz wäre nun ein Array zu machen mit der Anzahl der Tage pro Monat und dann irgendwie Schaltjahre zu berechnen um den Februar zu korrigiern. Alles viel zu umständlich.
Ich finde diese Lösung hier so elegant, dass ich sie hier kurz vorstellen möchte.
// Returns the number of days of a month.
function GetDaysInMonth = function( iFullYear, iMonth )
{
var iDaysInMonth = 32 - new Date( iFullYear, iMonth, 32 ).getDate();
return iDaysInMonth;
}
Das funktioniert, da JScript sehr smart is. Die maximale Anzahl von Tagen in einem Monat beträgt 31. Wenn man bei "new Date()" nun das Datum höher angibt als die tatsächliche Anzahl Tage es erlaubt, so wird einfach der Monat implizit erhöht:
new Date(2009, 11, 31) ergibt den 1. Dezember 2009. Nimmt man nun "getDate()" davon, erhält man den Überschuss der Tags des angegebenen Monats. Das Ergebnis von 32 abziehen und übrig bleiben die Tage des gesuchten Monats.
Das Date-Objekt kennt Schaltjahre perfekt, deswegen muss man sich darum keine Gedanken machen.