Didii Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 hallo wie bekomme ich mit php die erste kalenderwoche eines Jahres??? ich hab mir folgendes gedacht: $Jahresbeginn = mktime(0,0,0,0,1,1,$jahr); $FirstKW = strftime("%V", $Jahresbeginn); funktioniert aber nicht!!! liefert nämlich als ergebnis 48 :confused: kann mir jemand helfen?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Spike Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 Das Thema gab es hier schonmal. Kann mich an die Lösung zwar nicht mehr erinnern, aber die Boradsuche hilft bestimmt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 Original geschrieben von Didii hallo wie bekomme ich mit php die erste kalenderwoche eines Jahres??? ich hab mir folgendes gedacht: $Jahresbeginn = mktime(0,0,0,0,1,1,$jahr); $FirstKW = strftime("%V", $Jahresbeginn); funktioniert aber nicht!!! liefert nämlich als ergebnis 48 :confused: kann mir jemand helfen?? Die erste KW des Jahres ist doch eigentlich immer 1, oder verstehe ich da was falsch? Was willst du denn genau haben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schledo Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 Nein, es ist nicht immer die erste mit der 1 (leider). Die KW mit der ummer eins ist immer die Woche, welche zuerst komplett im neuen Jahr liegt, das davor interpretiert PHP als KW 0 und damit quasi als Niemandsland. Ich hatte das Problem in meiner Ausbildung auch mal (bei einem Projekt), dumusst also lediglich rausfinden, mit welchem Tag das Jahr angefangen hat und dann evtl. die KW korrigieren, falls es bei Dir (wie bei vielen andern auch) immer mit 1 anfangen soll. Ich würde jetzt gerne den Quellcode meienr Funktion von damals posten, aber den habe ich daheim, muss nachher mal danach schauen. Allerdings steht das irgendwo in diesem Forum auch noch einmal genauer, weil ich es damals auch hier gefragt hatte, also am besten die Suchfunktion verwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 Es ist noch etwas komplizierter. Es gibt Jahre, deren letzte Tage in die Kalenderwoche 1 des folgenden Jahres fallen. Beispielsweise ist die Woche, die am Mo, 29.12.2003 beginnt, die KW 1 des Jahres 2004! Ebenso gibt es Jahre, deren erste Tage zur KW 52 des Vorjahres gehoeren. Sa, 1.1.2000 gehört zu KW 52. Die genaue Regelung steht in einer ISO-Norm (-> Suchmaschine). Eine ausfuehrliche Erklaerung findet sich bei www.salesianer.de. In JavaScript habe ich es einmal so realisiert: function kalwoche(tag, jahr) { var kw; var kw2=new Date(2000, 0, 4, 6, 0, 0); // Anfang Kalenderwoche 2 kw2.setYear(jahr); if (kw2.getDay()==1) kw2.setDate(kw2.getDate()+1); while (kw2.getDay()!=1) kw2.setDate(kw2.getDate()+1); kw= (2+(tag.getTime()-kw2.getTime())/einewoche); if (kw==53 && tag.getDate()>28) kw=1; return kw; }[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 8. August 2003 Teilen Geschrieben 8. August 2003 Original geschrieben von Didii $Jahresbeginn = mktime(0,0,0,0,1,1,$jahr); Da ich mal vermute, dass es bei den Monaten ähnlich ist wie bei den Tagen, zitiere ich mal folgendes: Aus der PHP-Referenz: Der letzte Tag eines gegebenen Monats kann als der Tag "0" des nächsten Monats ausgedrückt werden Das hiesse, dass Du mit Deinem Codeschnippsel den 01.12. des Jahres ermittelt hast. Wenn Du die Funktion auf $Jahresbeginn = mktime(0,0,0,1,1,$jahr); umstellst, sollte es funktionieren. ICQ EDIT: Wo wir gerade in der Referenz unterwegs sind: strftime und date (ab 4.1.0) nehmen für die KW-Berechnung die ISO8601 her! Aus der PHP-Referenz: %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.) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.