Daylight saving time/de
From Lazarus wiki
Jump to navigationJump to search
│
Deutsch (de) │
Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981.
Die Funktion prüft, ob das übergebene Datum in der Sommerzeit liegt (Rückgabewert: True).
function funIstSommerzeit(Datum: TDateTime): boolean;
var
wrdJahr: word;
wrdMonat: word;
wrdTag: word;
datSommerzeit: TDatetime;
datWinterzeit: TDateTime;
begin
Result := False;
DecodeDate(Datum, wrdJahr, wrdMonat, wrdTag);
if wrdJahr < 1981 then
exit;
// Beginn der Sommerzeit:
// letzter Sonntag im März um 2:00 Uhr
datSommerzeit := EncodeDate(wrdJahr, 3, 31);
datSommerzeit := datSommerzeit - (DayOfWeek(datSommerzeit) - 1) +
Frac(StrToTime('02:00'));
// Ende der Sommerzeit:
// von 1981 bis 1995 letzter Sonntag im September um 3:00 Uhr
// ab 1996 letzter Sonntag im Oktober um 3:00 Uhr
if wrdJahr <= 1995 then
datWinterzeit := EncodeDate(wrdJahr, 9, 30)
else
datWinterzeit := EncodeDate(wrdJahr, 10, 31);
datWinterzeit := datWinterzeit - (DayOfWeek(datWinterzeit) - 1) +
Frac(StrToTime('03:00'));
Result := (Datum >= datSommerzeit) and (Datum < datWinterzeit);
end;
Beispiel für einen Aufruf der Funktion:
uses
...DateUtils...
function funTest: string;
begin
// 10. Oktober 1990, 14:34:56
if funIstSommerzeit(EncodeDateTime(1990,10,10,14,34,56,00);) = False then
Result := 'Normalzeit'
else
Result := 'Sommerzeit';
end;