Domino 9 und frühere Versionen > Administration & Userprobleme
Errechnen der Kalenderwoche aus dem eingegeben Datum
RalfK:
Hallo Notes Gemeinde,
ich habe eine kleine Frage bezüglich des Kalenderdatums. In der Ansicht erscheinen ja die Wochentage und gleichzeitig wird unten aufgeführt, in welcher Kalenderwoche ich mich gerade befinde.
Gibt es eine Möglichkeit, die Kalenderwoche anhand des eingegebenen Datums berechnen zu lassen?
Bsp: Eingabe 29.10.
Ausgabe in berechnetem Feld: Kalenderwoche: 44
Kann mir jemand ein paar Tipps geben. Bitte nicht gleich den kompletten String posten, da ich möglichst versuchen möchte, das alleine heraus zu bekommen (auch wenn meine Notes Programmier Kenntnisse noch in den Kinderschuhen stecken).
MfG
Ralf
eknori:
Auch wenn es jetzt doch die Lösung ist; du wirst genug zu tun haben, den Weg zu analysieren:
REM {This formula satisfies ISO 8601:1988};
REM {D is the date of interest.};
D := @TextToTime(@Prompt([OkCancelEdit]; "Enter Date"; "Please enter a date to convert to a week number:"; ""));
REM {D := [31/12/95]};
FirstOfYear := @Date(@Year(D); 1; 1);
LastOfYear := @Date(@Year(D); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
LastDayNum := @Weekday(LastOfYear);
REM {ISO weeks start on Monday and ends on Sunday.};
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
ISOLastDayNum := @If(LastDayNum = 1; 7; LastDayNum - 1);
REM {The first and last ISO week is the first};
REM {and last ISO week to include Thursday};
IsFirstWeek := 7 - ISOFirstDayNum > 2;
IsLastWeek := 7 - ISOLastDayNum < 4;
REM {The date of the first day of the first ISO week};
ISOFirstDay := @If(IsFirstWeek;
@Adjust(FirstOfYear; 0; 0; 1 - ISOFirstDayNum; 0; 0; 0);
@Adjust(FirstOfYear; 0; 0; 8 - ISOFirstDayNum; 0; 0; 0));
REM {The date of the last day of the last ISO week};
ISOLastDay := @If(IsLastWeek;
@Adjust(LastOfYear; 0; 0; 7 - ISOLastDayNum; 0; 0; 0);
@Adjust(LastOfYear; 0; 0; -ISOLastDayNum; 0; 0; 0));
REM {Date outside ISOFirstDay and ISOlastDay};
REM {are from the previous or next year};
REM {Return the ISO week number and exit};
FirstWeekNextYear := @If(D > ISOLastDay; @Return(@Prompt([Ok]; "FWNY";
@Text(@Year(D)+1) + "W01")); NULL);
REM {I suspect this is where Julian dates would be useful};
REM {A recursive call could be used in a real language};
LastWeekLastYear := (D - @Adjust(FirstOfYear; -1; 0; 0; 0; 0; 0))/60/60/24/7;
AdjustLastWeek := 1 - (LastWeekLastYear - @Integer(LastWeekLastYear));
@Set("LastWeekLastYear"; LastWeekLastYear + AdjustLastWeek);
@If(D < ISOFirstDay;
@Return(@Prompt([Ok]; "LWLY"; @Text(@Year(D) - 1) + "W" +
@Text(LastWeekLastYear))); NULL);
REM {If you get this far, the date falls into an ISO week this year};
REM {Convert the difference in seconds to weeks};
NumWeeks := (D - ISOFirstDay)/60/60/24/7;
REM {Fractions indicate that the date falls};
REM {in the middle of the ISO week};
WeekAdjust := 1 - (NumWeeks - @Integer(NumWeeks));
ISOWeekNum := NumWeeks + WeekAdjust;
REM {Conform to ISO 8601 format};
Pad:=@If(ISOWeekNum<10;"0";"");
Result := @Text(ISOWeekNum);
@Prompt([Ok];"Week number"; Result)
Axel:
Hi,
hier noch ein paar Links zu diesem Thema die ich gefunden habe:
http://www.keysolutions.com/NotesFAQ/howweek.html
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/a6c95dc638790d2585256cec0039c1e4?OpenDocument
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/4cf5bf02317a1a8d85256cec0034e593?OpenDocument
Axel
RalfK:
Wow, danke für die schnellen Antworten. :o
--- Zitat von: eknori am 22.10.04 - 12:30:34 ---Auch wenn es jetzt doch die Lösung ist; du wirst genug zu tun haben, den Weg zu analysieren:
--- Ende Zitat ---
Nun, ich hatte eh nichts vor am wochenende. ;D
koehlerbv:
Vielleicht noch ein Tipp am Rande:
Gerade in dieser Woche habe ich mich mit einer Fremdapplikation beschäftigen müssen, die genau die Routine von Christian Meis (-> Keysolutions-Link) verwendet hat.
Da hat mal wieder jemand überhaupt nicht über seinen Tellerrand geschaut. Beispiel:
--- Code: ---December31Offset = CalculateIsoWeekday( Cdat( "31.12." & Cstr( YearInQuestion ) ) )
--- Ende Code ---
Das wird ganz lustig, wenn man das in einem internationalen Konzern einsetzt, bei dem nahezu jedes Datumsformat denkbar ist.
Übrigens: Format$ kennt für Datumswerte auch den Parameter "ww". ;)
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln