Wochen eines Jahres

Von in php

Wie vie­le Wochen hat ein Jahr? Wer die­se Infor­ma­ti­on mit­tels PHP bereit­stel­len muss weiß, dass die­se Fra­ge nicht ganz so tri­vi­al ist, wie sie viel­leicht auf den ers­ten Blick scheint. Ande­re Pro­gram­mier­spra­chen wie zum Bei­spiel Java bie­ten hier eige­ne Funk­tio­nen, nicht jedoch PHP, obwohl es über aus­ge­feil­te Datum-​Funktionen ver­fügt. Mit einem klei­nen Trick kann man jedoch PHP über­lis­ten und sehr ein­fach und ele­gant an die gewünsch­te Infor­ma­ti­on kommen.

Der Trick dabei ist zu wis­sen, dass die letz­te Woche jedes Jah­res über einen 28. Dezem­ber ver­fügt. Das mag ver­rückt klin­gen, lässt sich aber leicht nach­prü­fen. Die­se Infor­ma­ti­on und das gege­be­ne Jahr kann man nun der bekann­ten Funk­ti­on date() über­ge­ben. Der Rück­ga­be­wert ist zwar anders gemeint, beant­wor­tet jedoch unse­re ein­gangs gestell­te Fra­ge richtig: 

echo date("W", strtotime("28 December 2008"));

date() mit dem For­mat “W” gibt uns eigent­lich die ISO-​8601 Wochen­num­mer des Jah­res, aber weil wir wis­sen, dass der 28. Dezem­ber immer in der letz­ten Woche des Jah­res lie­gen muss, wis­sen wir auch, dass das Ergeb­nis gleich­zei­tig die Anzahl der Wochen in dem abge­frag­ten Jahr darstellt.

Nach­trag:
Man muss mit dem Ergeb­nis von date(“W”) vor­sich­tig umge­hen. Sehen wir uns fol­gen­des Bei­spiel an:

date("W",strtotime("2010-01-01"));

Die Funk­ti­on date() gibt uns hier den Wert 53 zurück. Das Jahr 2009 hat tat­säch­lich 53 Wochen und der 1.1.2010 befin­det sich in die­ser 53. Woche. Aber in der 53. Woche des Jah­res 2009, nicht 2010! Mit ande­ren Wor­ten lässt sich vom Ergeb­nis der date()-Funktion kein Rück­schluss auf das Jahr zie­hen, was mit­un­ter bei Nicht­be­ach­tung zu uner­war­te­ten Ergeb­nis­sen füh­ren könnte.

Share on LinkedInShare on Redditshare on TumblrShare on StumbleUponDigg thisShare on FacebookGoogle+Tweet about this on TwitterEmail to someone