Zum Inhalt springen

1. Kalenderwoche eines Jahres


Empfohlene Beiträge

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??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...