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?
Aus KW und Jahr das Datum errechnen
Moderator: Moderatoren
- Armin
- 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
Hallo Wey,
hdh, Armin
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)
Re: Aus KW und Jahr das Datum errechnen
HEY ARMIN DU BIST EIN RIESEN SCHATZ!
Vielen Dank für die Funktion, sie traf 100% mein Bedrürfnis!
WEY
Vielen Dank für die Funktion, sie traf 100% mein Bedrürfnis!
WEY