Funktion KW und Wochentag

Für Fragen von Einsteigern und Programmieranfängern...

Funktion KW und Wochentag

Beitragvon BernhardDEL » 1. Feb 2017, 14:40 Funktion KW und Wochentag

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
BernhardDEL
 
Beiträge: 36
Registriert: 31. Jan 2017, 17:18

Beitragvon af0815 » 1. Feb 2017, 14:48 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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3159
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 1. Feb 2017, 15:00 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:
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.
wp_xyz
 
Beiträge: 2060
Registriert: 8. Apr 2011, 08:01

Beitragvon BernhardDEL » 1. Feb 2017, 20: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
BernhardDEL
 
Beiträge: 36
Registriert: 31. Jan 2017, 17:18

Beitragvon Timm Thaler » 1. Feb 2017, 21:15 Re: Funktion KW und Wochentag

BernhardDEL hat geschrieben:Function FuncWochentag : String;


Warum?

FormatDateTime('dddd', Now);
Timm Thaler
 
Beiträge: 244
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.6 FPC3.0.0, Raspbian Jessie Laz1.6 FPC3.0.0 | 
CPU-Target: Raspberry Pi 3
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried