Autor Thema: @function für Kalenderwoche???  (Gelesen 3024 mal)

Offline NSH

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
@function für Kalenderwoche???
« am: 07.05.02 - 12:23:10 »
Ich such ein @funktion mit dem ich die aktuelle KW angezeigt bekomme.
Kennt da jemand was ???
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Gruß

Nicole

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: @function für Kalenderwoche???
« Antwort #1 am: 07.05.02 - 12:27:11 »
yoo, hab ich wohl; muss ich holen, soll ich ??  ;D ;D


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)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline NSH

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re: @function für Kalenderwoche???
« Antwort #2 am: 07.05.02 - 12:38:55 »
Ich dachte eigendlich nicht an sowas umfangreiches.
Es geht darum, ich habe folgende Formel

FIELD Subject:="Aktuelle Problemsituation KW  "+@Text(@Now);
@Command([ViewRefreshFields])

Statt (@Now) brauch ich jetzt was, was die aktuelle Kalenderwoche und nicht das aktuelle Datum einträgt.

Nicole :-/
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Gruß

Nicole

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: @function für Kalenderwoche???
« Antwort #3 am: 07.05.02 - 12:47:16 »
Nun ja, wenns einfacher ginge, hätte ich das schon gepostet. Habe dir deine Formel mal ein wenig abgeändert.

REM "This formula satisfies ISO 8601:1988";
REM "D is the date of interest.";
D := @Date(@Now);
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);

FIELD Subject:=Result + " " +@Text(@Now);
@Command([ViewRefreshFields])
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: @function für Kalenderwoche???
« Antwort #4 am: 26.07.02 - 10:27:45 »
Mein Kollege hat was für LotusScript gefunden:

Format(CDat(Today), "ww")

Today kann durch einen beliebigen Datumswert ersetzt werden.
Gruß, Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline HaPe

  • Junior Mitglied
  • **
  • Beiträge: 81
  • Geschlecht: Männlich
  • Geht net, gibts net ...
    • Mein kleine Seite
Re: @function für Kalenderwoche???
« Antwort #5 am: 29.07.02 - 11:39:02 »
Hi,

ich hab noch eine etwas kürzere Version gefunden:

DatumDT muss mit dem gewünschten Datumswert ersätzt werden...


wt4j:=@If(@Weekday(@Date(@Year(DatumDT);1;4))=1;6;@Weekday(@Date(@Year(DatumDT);1;4))-2);

KWVon:=@If((DatumDT=@Date(@Year(DatumDT);12;29)&@Weekday(@Date(@Year(DatumDT);12;29))=2)
|(DatumDT=@Date(@Year(DatumDT);12;30)&@Weekday(@Date(@Year(DatumDT);12;30))>=2&@Weekday(@Date(@Year(DatumDT);12;30))<=3)
|(DatumDT=@Date(@Year(DatumDT);12;31)&@Weekday(@Date(@Year(DatumDT);12;31))>=2&@Weekday(@Date(@Year(DatumDT);12;31))<=4);
"1";
@Text(@Integer(1,2+((DatumDT-@Date(@Year(DatumDT);1;4))/86400+wt4j)/7)));

@If(@IsError(wt4j);"";"KW"+KWVon)

Gruß
   Hanspeter

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz