|
Prinzipiell könnte man die zugehörige Kalenderwoche zu einem Datum
berechnen, indem man ermittelt um welchen Tag des Jahres es sich handelt
und diesen dann durch sieben teilt. Eine Kalenderwoche beginnt aber laut
der DIN 1355 - Zeit immer Montags, so dass hierzu zunächst
bestimmt werden muss, wann die erste Woche des Jahres beginnt.
function Kalenderwoche(tag,monat,jahr) {
var Woche = 0;
var Wchtag1Jan = CurrentDoomDay(jahr);
var Tage = Tag_des_Jahres(tag,monat,jahr)-1;
if (Wchtag1Jan > 3)
Tage = Tage - (7 - Wchtag1Jan);
else Tage = Tage + Wchtag1Jan;
if (Tage < 0)
if ( (Wchtag1Jan == 4)
|| (CurrentDoomDay(jahr-1) == 3))
Woche = 53;
else Woche = 52;
else Woche = Math.floor(Tage/7) + 1;
if ((Tage > 360) && (Woche > 52)) {
if (Wchtag1Jan == 3)
Woche = 53;
else if (CurrentDoomDay(jahr+1) == 4)
Woche = 53;
else Woche = 1;
}
return Woche;
}
|
Dieser Algorithmus berechnet zunächst den Jahrestag des Datums, und dann
wird die Tagesanzahl so korrigiert, dass beginnend vom ersten Montag des Jahres
gerechnet wird. Dies funktioniert gut für 51 Wochen des Jahres, Probleme
bereiten die ersten und die letzten Tage des Jahres. Sofern eine negative
Tageszahl ermittelt wurde, liegen die ersten Tage eines Jahres in der
letzten Woche des Vorjahres. Dabei muss berücksichtigt werden, dass ein Jahr
eine 53. Woche hat, wenn es mit einem Donnerstag beginnt oder endet. Genauso
muss für die letzten Tages des Jahres bestimmt werden, ob sie in der letzten
Woche des aktuellen Jahres liegt, oder aber bereits in der ersten Woche des
Folgejahres.
| |