wachteldonk
Erfahrenes Mitglied
Wie kann ich anhand der Kalenderwoche z.B. 20 und des Jahres z.B. 2007 den Montag der KW als Datum rausbekommen unc noch besser auch das Datum des Sonntags der KW?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
/*********************************************************************************
* Diese Funktion Berechnet das Datum des Montags der [intWeek]-ten Kalenderwoche
*+des Jahres [intYear] und gibt es als Javascript Date()-Objekt zurück.
* Verwendet wird die DIN 1355 / ISO 8601 Kalenderwochen-Norm
* [intYear] muss nach 1990 sein, wegen Unzulänglichkeiten von Javascript.
*
* coded by con-f-use@gmx.net - be fair and do not remove this line!
*********************************************************************************/
function calWeek(intWeek,intYear) {
// VORARBEIT
dat = new Date(intYear,0,1); // Datum hier initalisiert auf der 1.1 des Jahres
firstDay = dat.getDay(); // Wochentag für den 1.1. des Jahres
if( firstDay == 0 ) firstDay = 7; // (1=Montag, 2=Diestag, ..., 7=Sonntag)
// EINGABEPRÜFUNG
// Date-Objekt verhält sich nur gutartig für Jahre nach 1990
// Ein jahr hat normalerweise 52 Kalenderwochen nach Definition
// Ist der 1.1 des Jahres aber ein Donnerstag, hat es 53 Kalenderowchen
// Negative Kalenderwochen machen keinen Sinn
if( intYear < 1991 || intWeek<1 || intWeek>53 || (intWeek>52 && firstDay!=4) ) return false;
// BERECHNEN DES STARTDATUMS FÜR DIE ERSTE KALENDERWOCHE
// Ist der 1.1 später als Donnerstag, startet die erste Kalenderwoche erst am folgenden Montag
if( firstDay > 4 )
dat.setTime( dat.getTime() + (8-firstDay) * 24*60*60*1000 );
// Sonst startet die erste Kalenderwoche am Montag vor dem 1.1 bzw. am 1.1 wenn er ein Montag ist
else
dat.setTime( dat.getTime() + (1-firstDay) * 24*60*60*1000 );
// Die [intWeek]-te Kalenderwoche ist sieben mal [intWeek] minus eins Tage später als die erste
dat.setTime( dat.getTime() + (intWeek-1)* 7*24*60*60*1000 );
// RETURN DES DATUM-OBJEKTS
return dat;
}
Hallo,... Ansonsten prima.