Autor Thema: Kalenderwoche berechnen  (Gelesen 1628 mal)

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Kalenderwoche berechnen
« am: 17.07.03 - 13:00:10 »
Hallo,
habe über die Suche folgende Formel gefunden
DayYr := ((DateComposed - @Date(@Year(DateComposed); 1; 1)) / (60 * 60 * 24))+ 1;
Day1stWk := 8 - (@Weekday(@Date(@Year(DateComposed); 1;1)));
@Integer(((DayYr - Day1stWk) + 5) / 7) + 1

Funktioniert auch, mit 2 Einschränkungen:

1: Wenn DateComposed leer ist, soll er auch nicht rechen
2: z.B 2005 fängt die erste KW erst am 03 Januar an, nicht am ersten (weniger als 4 Tage) wie macht man das??

danke gruß


Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Such dir eine Berechnung raus
« Antwort #1 am: 17.07.03 - 13:14:27 »
Such dir hier eine Berechnungsart raus

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

klaussal

  • Gast
Re:Kalenderwoche berechnen
« Antwort #2 am: 17.07.03 - 13:15:16 »
... zu 1. mit @if abfangen
... zu 2. mal hier im forum suchen, da gibts ein script, für die berechnung der kw

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Kalenderwoche berechnen
« Antwort #3 am: 17.07.03 - 14:07:34 »
Folgende Formel hab' ich vor Jahren mal geschrieben - und siehe da, sie funktioniert noch ;-)
Vorab noch was zum "Nur berechnen mit gültigem Datum". In meiner Formel setze ich das Datum auf @Today, falls nicht vorhanden (was auch immer damals der Kontext gewesen sein mag), aber man kann das auch besser machen, in dem man im Fall der Fälle die Berechnung einfach abbricht:
@If (!@IsTime (Datum); @Return (""); "");
Es kann aber auch erforderlich sein, daß man den "Kein-Datum-Zustand" zurückgeben muß und einen Default-Wert für die KW zurückgibt (0 oder leer oder ...)

Servus,
Bernhard

REM "1. Keine Berechnung ohne Datum!  2. Ist der 1.1. des geforderten Jahres kleiner als Freitag -> 1. KW beginnt u.U. im Vorjahr! 3. Sonst Wochentagnr. (So =1; Mo = 2, ...) vom 1.1. abziehen (-> letzter Sa.), Addition von 9 führt zum ersten Montag im Jahr)";
REM "Zunächst Berechnung des Starttags des aktuellen Jahres:";
StartTagAktJ:=@If(
@Weekday(@Date(@Year(Datum); 1; 1)) > 5;
@Adjust(@Date(@Year(Datum); 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum); 1; 1)) + 9; 0; 0; 0);
@Adjust(@Date(@Year(Datum); 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum); 1; 1)) + 2; 0; 0; 0));

REM "Jetzt Berechnung des Starttags des Vorjahres:";
StartTagVJ:=@If(
@Weekday(@Date(@Year(Datum) - 1; 1; 1)) > 5;
@Adjust(@Date(@Year(Datum) - 1; 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum) - 1; 1; 1)) + 9; 0; 0; 0);
@Adjust(@Date(@Year(Datum) - 1; 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum) - 1; 1; 1)) + 2; 0; 0; 0));

REM "Und jetzt noch die Berechnung des Starttags des Folgejahres:";
StartTagFJ:=@If(
@Weekday(@Date(@Year(Datum) + 1; 1; 1)) > 5;
@Adjust(@Date(@Year(Datum) + 1; 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum) + 1; 1; 1)) + 9; 0; 0; 0);
@Adjust(@Date(@Year(Datum) + 1; 1; 1); 0; 0; -@Weekday(@Date(@Year(Datum) + 1; 1; 1)) + 2; 0; 0; 0));


StartTagKW1:=@If(
Datum >= StartTagFJ; StartTagFJ;
Datum < StartTagAktJ; StartTagVJ;
StartTagAktJ);

@Integer((Datum - StartTagKW1) / 86400 / 7) + 1

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Kalenderwoche berechnen
« Antwort #4 am: 17.07.03 - 16:44:59 »
Danke für die Antworten, ich  teste das gleich mal aus

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz