Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: eknori (retired) am 22.08.05 - 18:53:41
-
Hat jemand eine FORMEL parat, mit der ich aus einer gegebenen Kalenderwoche ein Datum errechnen kann ?
-
hmmm... welches Datum ?
Den ersten der Woche, oder den zweiten der Woche, oder doch lieber den letzten ?
Da der 04.Januar immer in KW1 liegt (zumindest in Europa), könnte man so vorgehen:
KW := 34
jan04 := [04.01.2005];
adjDays := (KW-1) * 7;
oneDayinYourKW := @Adjust( jan04 ; 0 ; 0 ; adjDays ; 0 ; 0 ; 0 );
oneDayInYourKW ist jetzt der gleiche Tag wie der 04.Januar.
über @Weekday kannst Du jetzt den Tag bestimmen, und dann zum Montag der gleichen Woche gehen, o.ä.
HTH
Tode
-
Yep,Danke, das ist es ...
-
der Vollständigkeit halber hier noch die vollständige Formel um den Freitag einer gegebenen Kalenderwoche zu bestimmen:
KW := 34;
jan04 := [04.01.2005];
adjDays := (KW-1) * 7;
oneDayinYourKW := @Adjust( jan04 ; 0 ; 0 ; adjDays ; 0 ; 0 ; 0 );
_friday:=@Adjust(OneDayInYourKW;0;0;6 - @Weekday(oneDayinYourKW); 0;0;0);
@Prompt([Ok];"";@Text(_Friday))
-
@Weekday für Sonntag = 1.
Um zum Freitag der selben Woche zu kommen, müsstest Du -2 rechnen.
In Deiner Formel rechnest Du +5 : Bist also eine Woche zu spät...
Den Sonntag musst Du also als Sonderfall betrachten. Für alle anderen Klappt's.
Montag : 2 -> +4 OK
Dienstag : 3 -> +3 OK
Mittwoch : 4 -> +3 OK
Donnerstag : 5 -> +1 OK
Freitag : 6 -> 0 OK
Samstag : 7 -> -1 OK
Gruß
Tode
-
merci.
Kurz noch zum Hintergrund. Ich habe 2 Datenbanken, die zu einer DB zusammengezogenwerden sollen. Die "beschreibenden" Felder sind leicht über einen Migrationsagenten zusammenzufassen. Soweit kein Problem.
Einzig ein Feld; in der einen DB ein Textfeld mit "Freitexteingabe" ( entweder KW/YYYY oder Datum DD.MM.YYYY )in der anderen DB ein Datumsfeld.
Beide Felder übernehme ich in ein neues Feld und berechne dann die KW daraus; wenn Feld leer, dann schrott
REM {Berechnung der Kalenderwoche des Tages >>Datum<<};
REM {Die Initialisierung von DAtum kann bspw. mit @Today erfolgen.};
Datum := @TextToTime(@Text(puls.BisWann));
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);
_KW:=
@If(!@Contains(@Text(puls.BisWann);"/");
@Text(KW) + "/" +@Text(@Year(Datum));
@Text(puls.BisWann));
@If(@Trim(@Text(puls.BisWann))="";
"-";
@Word(_KW;"/";2) +"/"+@Word(_KW;"/";1))
( Formel ist übrigens von Bernhard und kann über den Suchbegriff "Kalenderwoche" hier gefunden werden )
Für evtl. Benachrichtigungen brache ich aber neben der KW auch noch ein DATUM; daher die Frage.
Die Ansicht sieht dann ( vorläufig so aus )
Die obige Formel ist in einem Feld "dspKW" ( berechnet) im Doc enthalten: Die Spalte mit dem Datum enthält
KW := @TextToNumber(@Word(dspKW;"/";2));
jan04 := [04.01.2005];
adjDays := (KW-1) * 7;
oneDayinYourKW := @Adjust( jan04 ; 0 ; 0 ; adjDays ; 0 ; 0 ; 0 );
_friday:=@Adjust(OneDayInYourKW;0;0;4 - @Weekday(oneDayinYourKW); 0;0;0);
_friday
P.S. Ich rechne hier übrigens den MITTWOCH aus ;)
Und ich weiß, daß ich auch noch @Word(_KW;"/";1) checken und dann entsprechend tätig werden muß ;D Deshalb ja auch "vorläufig".
Und den Einwand von Tode werde ich auch noch berücksichtigen ...
-
( Formel ist übrigens von Bernhard und kann über den Suchbegriff "Kalenderwoche" hier gefunden werden )
Ich will mich hier nicht mit fremden Federn schmücken: Die Formel wurde aus meinem BP-Beitrag mittlerweile durch eine kürzere Variante von Joachim (Alias "jr") ersetzt. Ich habe Joachims Formel damals aufmerksam gelesen und danach ziemlich geknüppelt in Tests und stehe damit für die Freigabe / den Ersatz meines Konstrukts.
Bernhard
-
Ich habe Joachim im BP-Artikel (http://www.atnotes.de/index.php?topic=20457.0) gleich mal in der Autorenliste ergänzt:
Autor(en): Bernhard Koehler (koehlerbv), Formeln: Joachim (jr)
Übrigens, hier gibt es noch eine Lösung von Ata für Lotus Script:
http://www.atnotes.de/index.php?topic=4453.0 (Function 'KWRange')
-
Hier gibt es noch einiges Rund um den Kalender
http://www.computus.de/
Gruss
André