Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MrMagoo 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ß
-
Such dir hier (http://keysolutions.com/NotesFAQ/howweek.html) eine Berechnungsart raus
Thomas
-
... zu 1. mit @if abfangen
... zu 2. mal hier im forum suchen, da gibts ein script, für die berechnung der kw
-
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
-
Danke für die Antworten, ich teste das gleich mal aus