Ich bin kürzlich auf ein großes Problem gestoßen, da ich ein System habe, das die Kunden wöchentlich bezahlt.ISO-8601 Wochennummerierung vs "Outlook" Nummerierung in PHP
Wie wir alle wissen, hat ein Jahr 52 Wochen, und es gibt Standards dafür. Ich verwende PHP alias date ('W'), um die Wochennummer von einem Datum zu erhalten, das das gemäß dem Standard ISO-8601 berechnet.
Hier sind einige Referenzen:
Aber hier ist das Problem: Jahr 2009 hat 53 Wochen. Es scheint, dass durch den Gregorianischen Kalender innerhalb von 400 Jahren 71 Jahre 53 Wochen haben. Das ist eine Sache, die ich nicht wusste und wahrscheinlich auch viele nicht.
Laut Wikipedia:
2009-12-31 ist 2009-W53-4 (ISO Jahr 2009 hat 53 Wochen nach dem Gregorianischen Jahr 2009 hinaus, die mit Donnerstag beginnt und endet, an beiden Enden mit 3 Tage).
und die Datumsfunktion in PHP respektiert es vollständig.
Wenn Sie in MS Outlook schauen und den Wochentag in der Kalenderansicht anzeigen, wird er 52 Wochen lang erscheinen. 28 DEC 2009 bis 03 JAN 2010 Woche 1. Ist das ein anderer Standard? Der US-Standard oder so?
Wenn ja, warum kann PHP das nicht unterstützen? Hat jemand eine Funktion gemacht, die dies unterstützt?
Ist es richtig, 53 Wochen zu haben? Wir haben sowohl europäische als auch amerikanische Kunden.
Interessante Frage. Ich stelle fest, dass Outlook eine Woche 53 in 2011 hat. Es sieht so aus, als ob "Woche 1" die erste Woche mit dem 1. Januar ist. Da Wochen am Sonntag oder Montag basierend auf einer Einstellung beginnen können, könnte es für andere auch anders sein Benutzer. –
Ich habe es gerade versucht. In Outlook können Sie jeden Tag als Starttag für die Woche festlegen. Die Wochennummerierung beginnt dann mit der Woche, die den 1. Januar enthält. In Outlook stehen somit sieben verschiedene Nummerierungsschemas zur Verfügung. –