Einzelnen Beitrag anzeigen
  #12 (permalink)  
Alt 30-12-2008, 14:25
Koala
 PHP Junior
Links : Onlinestatus : Koala ist offline
Registriert seit: Jan 2006
Beiträge: 887
Koala ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://www.nwn.de/hgm/kalender/kal-64.htm:

Zitat:
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.
PHP-Code:
 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 - (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;
 } 
Zitat:
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.
Mit Zitat antworten