Aus KW und Jahr das Datum errechnen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
__WEY
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 25
Registriert: Do, 11. Sep 2008 9:01

Aus KW und Jahr das Datum errechnen

Beitrag von __WEY »

Hallo Leute!

Gibt es in Xbase++ eine Funktion mit der man aus der KW und dem Jahr das Datum (z.B Montag) errechnen kann? Ich hab in der HLP nichts gefunden. Oder gibt es einen anderen Weg, wie man das Problem lösen könnte?
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Aus KW und Jahr das Datum errechnen

Beitrag von Armin »

Hallo Wey,

hdh, Armin

Code: Alles auswählen

       FUNCTION KWTOD (KW)
        *******************************************************************
        *  1. Tag einer Kalenderwoche  JJJJ.WW -> TT.MM.JJ
        *******************************************************************
        *     Datum des ersten Tages in der Kalenderwoche ermitteln
        *     <nKW>   ist die Kalenderwoche, deren erster Tag ermittelt werden soll.
        *     <nJahr> ist das Jahr (incl. Jahrhundert), auf das sich die KW bezieht.
        *     Es wird das Datum des ersten Tages (immer ein Montag) der angegebenen
        *     Kalenderwoche zurückgegeben oder ein leeres Datum,
        *     wenn Null oder Werte eines anderen Typs übergeben wurden.
        *     Diese Routine liefert das Datum zu einer Kalenderwoche. Dabei ist jedoch
        *     zu beachten, dass die 1. KW bereits im Vorjahr beginnen kann und das
        *     zurückgelieferte Datum somit als Jahr <nJahr> -1 besitzt.
        *******************************************************************
        LOCAL nKW:=VAL(RIGHT(KW,2))
        LOCAL nJahr:=VAL(LEFT(KW,4))
        LOCAL dRueck:=CTOD("  .  .  ")

        IF !EMPTY(KW)
           **** Anzahl der Tage seit 1. KW-Beginn
           dRueck:=(KWBEGINN(NJAHR) +((nKW -1) *7))
        ENDIF

        RETURN dRueck


        FUNCTION KWBEGINN ( nJahr )
        ****************************************************************************
        * Datum des ersten Tages der Wochenzählung
        ****************************************************************************
        *LOCAL dKWBeginn   := SToD(Str(nJahr, 4, 0)+'0101')

        LOCAL dKWBeginn    := CTOD("01.01."+STR(NJAHR,4,0))
        LOCAL nNeujahrstag := DoW(dKWBeginn)
        *
        // Wochtag umformatieren -> Montag 1, Dienstag 2, ...
        nNeujahrstag := IF(nNeujahrstag = 1, 7, nNeujahrstag -1)
        *
        dKWBeginn -= nNeujahrstag -1           // Datum des Montags suchen
        IF nNeujahrstag >= 5                   // Ist Neujahr nach Donnerstag ?
          dKWBeginn += 7                       // dann ist's KW 53.
        ENDIF                                  // KW 1 eine Woche später !
        *
        Return(dKWBeginn)
__WEY
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 25
Registriert: Do, 11. Sep 2008 9:01

Re: Aus KW und Jahr das Datum errechnen

Beitrag von __WEY »

HEY ARMIN DU BIST EIN RIESEN SCHATZ!

Vielen Dank für die Funktion, sie traf 100% mein Bedrürfnis!

WEY
Antworten