Funktion KW und Wochentag

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
BernhardDEL
Beiträge: 36
Registriert: Di 31. Jan 2017, 17:18

Funktion KW und Wochentag

Beitrag von BernhardDEL »

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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

Schau mal in die DateUtils rein bzw. suche mit 'Lazarus DateUtils' dannach

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).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Funktion KW und Wochentag

Beitrag von wp_xyz »

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:

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.

BernhardDEL
Beiträge: 36
Registriert: Di 31. Jan 2017, 17:18

Re: Funktion KW und Wochentag

Beitrag von BernhardDEL »

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

Timm Thaler
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

Beitrag von Timm Thaler »

BernhardDEL hat geschrieben:Function FuncWochentag : String;


Warum?

FormatDateTime('dddd', Now);

Antworten