Jahr und Woche des Jahres vom PHP-Datum () erhalten, wenn die Woche zwei Jahre umfasst

7

Ich habe ein interessantes Problem mit der PHP date() -Funktion festgestellt. Haben Sie noch kein Glück gehabt, eine Diskussion über SO oder Google zu finden, aber vielleicht ist jemand anderes schon einmal auf dasselbe Problem gestoßen?

Ich versuche, das JAHR und die WOCHE DES JAHRES für einen bestimmten Zeitstempel zu bekommen. Dies ist der Code, den ich verwende:

date("Y-\WW");

Was ab heute korrekt ausgegeben wird: 2011-W39 .

Das Problem ist, wenn ein Zeitstempel geliefert wird, wenn der betreffende Zeitstempel beispielsweise am 3. Januar 2011 ist (was tatsächlich Teil der "52. Woche von 2010" war. PHP gibt korrekt W52 zurück, aber es gibt auch 2011 zurück als das Jahr statt 2010.

date("Y-\WW", 1294016400);

Ausgaben: 2011-W52

Irgendeine Idee, wie Sie dieses Problem lösen können? Ich sollte anmerken, dass es in diesem Fall leicht wäre, einfach zu vergleichen, dass die strtotime() der Ausgabe größer ist als die aktuelle time() und anpassen, aber ich brauche eine Lösung, die auch für frühere Jahre funktionieren wird (zB wenn das Gleiche passierte für den 3. Januar 2010).

    
Riley Dutton 30.09.2011, 13:30
quelle

1 Antwort

23

Darn, anscheinend habe ich die Dokumentation nicht genau genug gelesen, der Buchstabe o wurde in PHP 5.1.0 hinzugefügt:

Aus der Dokumentation für date() :

  

ISO-8601 Jahresnummer. Dieser Wert hat den gleichen Wert wie Y, außer dass die ISO-Wochennummer (W) zum vorherigen oder nächsten Jahr gehört und stattdessen dieses Jahr verwendet wird. (hinzugefügt in PHP 5.1.0)

Also sollte mein Code date("o-\WW");

sein     
Riley Dutton 30.09.2011, 13:37
quelle

Tags und Links