Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: braincrusha am 12.03.04 - 16:21:17

Titel: Datum für Ansicht formatieren
Beitrag von: braincrusha am 12.03.04 - 16:21:17
Ich habe ein Feld in dem ein Datum hinterlegt ist. Dieses Datum brauch ich in einer meiner Ansichten. Also nach diesem Datum sollen sie sich ordnen. Vorher sollte das datum aber umgeändert werden in die Woche des Jahres..

Also statt 1.1.2004 soll nur noch 1 da stehen..

ich hab es mit der Formatfunktion probiert in allen möglichen Variationen da ich nicht viel in der Hilfe darüber gefunden.

Wäre über jede Hilfe dankbar
Titel: Re:Datum für Ansicht formatieren
Beitrag von: eknori (retired) am 12.03.04 - 16:27:27
@Word(DatumsFeld;".";1)
oder wenn es ein Datumsfeld ist (Typ)

@Day (Datumsfeld)


ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen, ich werdeLesen lernen,
Titel: Re:Datum für Ansicht formatieren
Beitrag von: koehlerbv am 12.03.04 - 16:33:44
@Ulrich: Lesen bildet   ;D

@braincrusha: Wie wäre es, wenn Du die Suche benutzen würdest ? "Kalenderwoche" bringt Dich sofort zum Ergebnis !

Bernhard
Titel: Re:Datum für Ansicht formatieren
Beitrag von: braincrusha am 12.03.04 - 16:36:58
ich glaub ich wurde Missverstanden.

Es sollte nicht ersetzt werden oder nur der Tag oder der Monat dort stehen sondern die Woche des Jahres.

Also bei 1.1.2004 ne 1 weil es die erste Woche im Jahr ist bei 8.1.2004 dann ne zwei weil es die zweite Woche im Jahr ist.

etc
Titel: Re:Datum für Ansicht formatieren
Beitrag von: eknori (retired) am 12.03.04 - 16:44:11
REM {This formula satisfies ISO 8601:1988};
REM {Formulae updated : 08.28.1997 };
REM {by Stephen P.R. Renton (sprenton@mcmail.com)};
REM {Version: 1.01};
REM {Tested on : Lotus Notes Release 4.5};

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)
Titel: Re:Datum für Ansicht formatieren
Beitrag von: cococo69 am 13.03.04 - 17:24:07
... oder nimm die Script-Bibliothek von Anton Tauscher...
http://www.anton-tauscher.de/ (http://www.anton-tauscher.de/) ---> unter "Computer --> "Downloads"

Zitat
Umgang mit Zeiträumen, Kalenderwochen, Datumswerten...
    Immer wieder braucht man Datumsangaben in deutsch, wie Monatsname, Tagesname,
    Kalenderwoche nach ISO und US-Format... => LS Library mit Demomaske
    aktualisiert am 13.12.2002 - Arbeitstage für Zeitraum
    Date Handling (gezippt, 93 KByte)   (LN-DB, 512 KByte)

Gruß
Armin
Titel: Re:Datum für Ansicht formatieren
Beitrag von: braincrusha am 16.03.04 - 11:18:58
aha. das sind aber alles Agenten oder?

Ich suche eine Möglichkeit dieses Feld innerhalb einer Ansicht unter Spaltenwert zu benützen ohne es vorher mit einem Agenten oder ähnlichem umzuwandeln?

Ist sowas möglich?

Also dass ich das ganze als Spaltenwert eingebe.
Titel: Re:Datum für Ansicht formatieren
Beitrag von: koehlerbv am 16.03.04 - 11:26:19
Mit geringfügigsten Anpassungen kannst Du dafür Ulrichs Formeln verwenden.

Bernhard
Titel: Re:Datum für Ansicht formatieren
Beitrag von: braincrusha am 16.03.04 - 11:27:46
Wer ist Ulrich?
Titel: Re:Datum für Ansicht formatieren
Beitrag von: koehlerbv am 16.03.04 - 11:35:28
Der Guru, der oben die KW-Formeln gepostet hat.

Ansonsten hier noch eine spaltenfertige Formel, die Du mit der Suchfunktion des Forums auch gefunden hättest:
Code
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

Und diese ist von koehlerbv  ;)

Bernhard
Titel: Re:Datum für Ansicht formatieren
Beitrag von: braincrusha am 16.03.04 - 11:36:53
ich hab gesucht... kam aber nur auf ewig lange Texte die mir starkl nach Scriptbibliotheken oder Agenten aussahen.