[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: date +%W



* Sven Schiwek schrieb am 30.Apr.2003:
> Jan Ulrich Hasecke wrote:
> >Sicher komplett OT:
> >
> >Ich stelle gerade fest, dass date und korganizer bei der Wochenanzeige
> >anderer Meinung sind
> >
> >date
> >Wed Apr 30 11:48:11 CEST 2003
> >
> >date +%W
> >17
> >
> >Was nach meinem Taschenkalender falsch ist. 
> >
> >Korganizer stellt die 18. Woche dar.
> >
> 
> Laut 'man date' zählt '%W' von 0 bin 53. Du musst also immer 1 dazu 
> addieren um auf die richtige Woche zu kommen.

Nein, so einfach ist es nicht. Das Problem sind die Wochen, in denen
der Jahreswechsel ist. Bei %U und %W werden diese Wochen doppelt
bezeichnet. Für die Tagen des alten Jahres ist dies die 52. oder auch
53. Woche des alten Jahres und für die Tage des neuen Jahres ist die
gleiche Woche die 0.Woche des neuen Jahres. die 1. Woche des neuen
Jahres ist die erste Woche, die sich komplett im neuen Jahr
befindet. Dies kann auch schon der 1. Jannuar sein.

Der Unterschied zwischen %U und %W liegt darin, daß bei %U die Woche
wie in der Bibel mit dem Sonntag beginnt und bei %W wie bei ISO mit
dem Montag. Meist unterscheiden sich die Wochenzählung nur am
Sonntag, aber manchmal ist die ganze Woche verschoben.


Bei %V ist dies vollkommen anders. Dort ist die ganze Woche einem
Jahr zugeordnet und die ganze Woche hat eine einheitliche
Wochennummer. Und zwar dergestalt, daß die ganze Woche dem Jahr
zugerechnet wird, in dem sich der größere Teil der Woche befindet.
Da auch %V die Woche mit dem Montag beginnen läßt ist der Donnerstag
der Tag, der sich mitten in der Woche befindet. Der Mittwoch ist es,
wenn man die Woche mit dem Sonntag beginnen läßt. Das die Woche mit
dem Sonntag beginnt war bis zur Mitte des vorrigen Jahrhunderts
vollkommen klar. Erst danach verschob sich die Einstellung der
Menschen. Jedenfalls dadurch ist der Donnerstag der entscheidende
Tag. Ist er im alten Jahr, so wird die ganze Woche dem alten Jahr
zugerechnet und die Woche ist die 52. Woche des alten Jahres. Ist
dre Donnerstag der 31. Dezember oder der 30. Dezember und das alte
Jahr war ein Schaltjahr, so ist es die 53.Woche. Liegt der
Donnerstag hingegen im neuen Jahr, so ist die ganze Woche die 1.
Woche des neuen Jahrs.

Das hat den Vorteil, daß die Woche einheitlich bezeichnet wird, aber
den Nachteil, daß Tage, die im einen Jahr liegen einer Woche im
anderen Jahr zugeordnet werden.

Das mit %W und %U habe ich erschlossen und hoffe, daß es so stimmt,
wie ich es geschrieben habe. Aber Die ISO habe ich mir vor Jahren
mal durchgelesen. Und da steht das so drin wie ich es zu %V
geschrieben habe.

$ date --date 12/31/1988 "+%a: %%U=%U %%V=%V %%W=%W"
Sam: %U=52 %V=52 %W=52
$ date --date 1/1/1989 "+%a: %%U=%U %%V=%V %%W=%W"
Son: %U=01 %V=52 %W=00
$ date --date 12/31/1989 "+%a: %%U=%U %%V=%V %%W=%W"
Son: %U=53 %V=52 %W=52
$ date --date 1/1/1990 "+%a: %%U=%U %%V=%V %%W=%W"
Mon: %U=00 %V=01 %W=01
$ date --date 12/31/1990 "+%a: %%U=%U %%V=%V %%W=%W"
Mon: %U=52 %V=01 %W=53
$ date --date 12/31/1991 "+%a: %%U=%U %%V=%V %%W=%W"
Die: %U=00 %V=01 %W=00

Keiner der %U, %V oder %W läßt sich einfach von einem der anderen
ableiten.

Bernd



Reply to: