Autor Thema: Berechnung der Kalenderwoche  (Gelesen 4791 mal)

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Berechnung der Kalenderwoche
« am: 17.06.05 - 17:12:42 »
Hallo,

habe gerade den Eintrag zur Berechnung des Quartals gelesen und dachte mir, dass die Formel zur Berechnung der Kalenderwoche ganz gut dazu passt. Die habe ich vor etwa 7 Jahren bei meinem damaligen Arbeitgeber geschrieben, funktioniert aber heute immer noch...  ;)

Also, wen's interessiert:

REM "Berechnung der Kalenderwoche des Tages >>Datum<<";

Datum           := [tt.mm.jjjj];
Wochenstart     := @Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0);
ErsterJanuar    := @Date(@Year(Wochenstart); 1; 1);
ErsterWochentag := @Weekday(ErsterJanuar);
MinutenProTag   := 60 * 60 * 24;
TagImJahr       := (Wochenstart - ErsterJanuar) / MinutenProTag;
Kalenderwoche   := 1 + @Round(TagImJahr / 7);
KW              := @If((ErsterWochenTag *= 2:3:4) & (Kalenderwoche = 53); 1; Kalenderwoche);

@Text(KW) + " KW"


Viel Spaß,

Joachim
« Letzte Änderung: 17.06.05 - 22:06:08 von jr »
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Berechnung der Kalenderwoche
« Antwort #1 am: 17.06.05 - 17:56:16 »
Kurz, knackig, übersichtlich - sehr gut !

Danke, Joachim - das wird sicherlich vielen hilfreich sein. Zwei Zeilen könnte man noch "einsparen", aber das würde der Performance kaum nützen, der Lesbarkeit jedoch schaden.

Bernhard

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Berechnung der Kalenderwoche
« Antwort #2 am: 17.06.05 - 18:54:23 »
Kürzer geht immer (in einer Formel...):  ;D ;D ;D

@Text(@If((@Weekday(@Date(@Year(@Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0)); 1; 1)) *= 2:3:4) & ((1 + @Round(((@Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0) - @Date(@Year(@Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0)); 1; 1)) / (60 * 60 * 24)) / 7)) = 53); 1; (1 + @Round(((@Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0) - @Date(@Year(@Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0)); 1; 1)) / (60 * 60 * 24)) / 7)))) + ". KW"
« Letzte Änderung: 17.06.05 - 22:14:20 von jr »
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Berechnung der Kalenderwoche
« Antwort #3 am: 17.06.05 - 19:01:17 »
Genau deswegen sprach ich von der Lesbarkeit  ;D

In einer Spaltenformel in einer seeehr grossen DB kann aber eine abgespeckte Fassung durchaus Sinn machen.

Nochmals danke, Joachim !

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Berechnung der Kalenderwoche
« Antwort #4 am: 17.06.05 - 20:04:08 »
Danke, Joachim.

1. Frage: Ist die ISO-konform?

@Bernhard, kannst Du bitte noch einen Vergleich machen zu Deiner Formel?
AtNotes BP - Kalenderwoche: Berechnung mit Formeln und LS

Denn wenn diese hier besser ist und Deine Formel ersetzt, sollte man den BP-Artikel aktualisieren.

Danke,
Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Berechnung der Kalenderwoche
« Antwort #5 am: 17.06.05 - 22:08:20 »
Hallo,

ich kannte die ISO-Formel nicht, deshalb habe ich einmal ein paar Termine durchgerechnet und siehe da, ein paar stimmten nicht... :(

Also habe ich noch mal schnell die Formel oben korrigiert. Jetzt stimmt Sie in allen Terminen mit dem Kalender überein.

Gruß,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Berechnung der Kalenderwoche
« Antwort #6 am: 18.06.05 - 22:16:56 »
Also habe ich noch mal schnell die Formel oben korrigiert. Jetzt stimmt Sie in allen Terminen mit dem Kalender überein.

Cool, danke.

Ich habe mir (1) Deine Formel im Vergleich zu ISO 8601:1988 angesehen und (2) ein paar Tests (gerade Ende/Anfang eines Jahres) gemacht: konnte keine Fehler feststellen, ich denke die @Formula ist voll ISO-konform.

Danke nochmal dafür, ist eine sehr schöne Lösung. Ich werde anregen/veranlassen, dass der BP-Beitrag zu KW entsprechend aktualisiert und Deine Formel eingesetzt wird.
Wie möchtest Du als Autor erwähnt werden: möchtest Du auch, dass Dein Nachname, evtl. noch Website etc. erscheint, oder nur Dein Vorname "Joachim" ?

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Berechnung der Kalenderwoche
« Antwort #7 am: 20.06.05 - 08:47:10 »
Hi,

den BP-Artikel Kalenderwoche habe ich entsprechend geändert. Auch von mir nochmals vielen Dank für deine Mitarbeit.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline dh-paule

  • Aktives Mitglied
  • ***
  • Beiträge: 199
  • Geschlecht: Männlich
  • DNUG Award 2006
Re: Berechnung der Kalenderwoche
« Antwort #8 am: 22.06.05 - 08:28:50 »
DANKE an jr !!

nun kann ich meinen selfmade-Gruppenkalender endlich um die KW erweitern...
Life on earth may be expensive,
but it does include an annual free trip around the sun


_________________________________________________________

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz