Hi
Ich bin bei einer Diskussion in einer PHP-Newsgroup auf das Problem der falschen Berechnung der ersten Woche bei weekOfDay gestossen. Es gibt seit einiger Zeit eine Regel, die besagt, die erste Woche im Jahr ist die Woche mit mindestens 4 Tagen.
strftime():
%V - Kalenderwoche (nach ISO 8601:1988) des aktuellen Jahres. Als Dezimal-Zahl mit dem Wertebereich 01 bis 53, wobei die Woche 01 die erste Woche mit mindestens 4 Tagen im aktuellen Jahr ist. Die Woche beginnt montags (nicht sonntags). (Benutzen Sie %G or %g für die Jahreskomponente, die der Wochennummer für den gegebenen Timestamp entspricht.)
weekOfDay aber kann nur Montag oder Sonntag als ersten Tag nutzen. Damit sind alle Kalenderfunktionen basierend auf weekOfDay unbrauchbar.
Beispiel: 1.1.1991 ist ein Dienstag, also ist das Woche 1 nach ISO.
<?
$date=new vlibDate(de);
echo $date->weekOfYear($date->mkTimestamp(1991, 01, 01)).<br>;
echo strftime("%V",mktime(0, 0, 0, 1, 1, 1991)).<br>;
?>
weekOfYear gibt fälschlicherweise Woche 0, also letzte Woche im Vorjahr aus, während strftime korrekt Woche 1 anzeigt. Es wäre gut, wenn diese Funktion gefixt würde, denn erst 2010 würde die Funktion erst wieder ein korrektes Ergebnis liefern.
Gruß
Udo