Hi - ich wieder mal mit zwei Fragen :
Kennt jemand eine Funktion, die mir den Wochentag eines Datums zurückliefert ?
Sowas bräuchte ich auch für die Kalenderwoche in der ein bestimmtes Datum liegt.
Schon einmal vielen Dank im Voraus.
Bernhard
Funktion KW und Wochentag
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Funktion KW und Wochentag
Schau mal in die DateUtils rein bzw. suche mit 'Lazarus DateUtils' dannach
Da findest du so Sachen wie DayOfWeek, WeekOfTheYear etc.
Da findest du so Sachen wie DayOfWeek, WeekOfTheYear etc.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Funktion KW und Wochentag
DayOfWeek(datetime: TDateTime) --> gibt den Wochentag als Zahl 1..7 codiert zurück: 1 = Sonntag .. 7 = Samstag (http://lazarus-ccr.sourceforge.net/docs ... fweek.html)
Es gibt auch noch DayOfTheWeek, das vom Wochenbeginn (bei uns Montag) aus zählt. (http://www.freepascal.org/docs-html/rtl ... eweek.html)
WeekOfYear(datetime: TDateTime) --> gibt die ISO-Wochennummer zurück (http://www.freepascal.org/docs-html/rtl ... eyear.html)
Das Argument datetime ist die Anzahl der Tage seit dem 30.12.1899. Benutze EncodeDate(jahr, monat, tag), um die üblichen Datumsbestandteile in den TDateTime-Typ zu konvertieren. DecodeDateTime wandelt zurück.
Du brauchst die Units SysUtils und/oder DateUtils;
Beispiel:
Es gibt auch noch DayOfTheWeek, das vom Wochenbeginn (bei uns Montag) aus zählt. (http://www.freepascal.org/docs-html/rtl ... eweek.html)
WeekOfYear(datetime: TDateTime) --> gibt die ISO-Wochennummer zurück (http://www.freepascal.org/docs-html/rtl ... eyear.html)
Das Argument datetime ist die Anzahl der Tage seit dem 30.12.1899. Benutze EncodeDate(jahr, monat, tag), um die üblichen Datumsbestandteile in den TDateTime-Typ zu konvertieren. DecodeDateTime wandelt zurück.
Du brauchst die Units SysUtils und/oder DateUtils;
Beispiel:
Code: Alles auswählen
program DateTest;
uses
DateUtils;
var
dt: TDateTime;
begin
dt := EncodeDate(2017, 2, 1); // 1.Febr 2017 als DateTime Variable
WriteLn('Heute ist Tag Nr. ', DayOfWeek(dt));
Write('Das ist ein ');
case DayOfWeek(dt) of
1: WriteLn('Sonntag');
2: WriteLn('Montag');
3: WriteLn('Dienstag');
4: WriteLn('Mittwoch');
5: WriteLn('Donnerstag');
6: WriteLn('Freitag');
7: WriteLn('Samstag');
end;
WriteLn('Heute sind wir in Kalenderwoche ', WeekOfTheYear(dt));
ReadLn;
end.
-
- Beiträge: 36
- Registriert: Di 31. Jan 2017, 17:18
Re: Funktion KW und Wochentag
Danke an Alle.
Problem wurde gelöst. Jetzt hab ich zwei Funktionen, die im Timer aufgerufen werden (damit sich Tag um 0:00 Uhr umstellt und auch die Kalenderwoche Sonntags um 0:00 Uhr anpasst :
Function FuncWochentag : String;
var
temp : TDateTime;
begin
temp := Now;
case DayOfTheWeek(temp) of
1 : Result := ('Montag,');
2 : Result := ('Dienstag,');
3 : Result := ('Mittwoch,');
4 : Result := ('Donnerstag,');
5 : Result := ('Freitag,');
6 : Result := ('Samstag,');
7 : Result := ('Sonntag,');
end; {case}
end;
Function FuncKalenderwoche : Integer;
var
temp : TDateTime;
begin
temp := Now;
Result := WeekOfTheYear(temp);
end;
procedure TStatusForm.Timer1Timer(Sender: TObject); {Zeit und Datum übertragen}
begin
Uhrzeit.Caption:=TimeToStr(Time);
Datum.Caption:=DateToStr(Date);
Wochentag.Caption:=FuncWochentag;
Kalenderwoche.Caption:=IntToStr(FuncKalenderwoche)+'. KW';
end;
Damit wäre das Thema dann wohl erstmal abgeschlossen.
Ich bin dank Eurer Hilfe schon ein ganzes Stück weiter.
Bernhard
Problem wurde gelöst. Jetzt hab ich zwei Funktionen, die im Timer aufgerufen werden (damit sich Tag um 0:00 Uhr umstellt und auch die Kalenderwoche Sonntags um 0:00 Uhr anpasst :
Function FuncWochentag : String;
var
temp : TDateTime;
begin
temp := Now;
case DayOfTheWeek(temp) of
1 : Result := ('Montag,');
2 : Result := ('Dienstag,');
3 : Result := ('Mittwoch,');
4 : Result := ('Donnerstag,');
5 : Result := ('Freitag,');
6 : Result := ('Samstag,');
7 : Result := ('Sonntag,');
end; {case}
end;
Function FuncKalenderwoche : Integer;
var
temp : TDateTime;
begin
temp := Now;
Result := WeekOfTheYear(temp);
end;
procedure TStatusForm.Timer1Timer(Sender: TObject); {Zeit und Datum übertragen}
begin
Uhrzeit.Caption:=TimeToStr(Time);
Datum.Caption:=DateToStr(Date);
Wochentag.Caption:=FuncWochentag;
Kalenderwoche.Caption:=IntToStr(FuncKalenderwoche)+'. KW';
end;
Damit wäre das Thema dann wohl erstmal abgeschlossen.
Ich bin dank Eurer Hilfe schon ein ganzes Stück weiter.
Bernhard
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Funktion KW und Wochentag
Warum?BernhardDEL hat geschrieben:Function FuncWochentag : String;
FormatDateTime('dddd', Now);