Difference between revisions of "Daylight saving time/de"
From Free Pascal wiki
Jump to navigationJump to searchm (Fixed syntax highlighting; deleted category already in page template) |
|||
Line 1: | Line 1: | ||
{{Daylight saving time}} | {{Daylight saving time}} | ||
− | + | ||
− | Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981. | + | Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981. |
− | Die Funktion prüft, ob das übergebene Datum in der Sommerzeit liegt (Rückgabewert: True). | + | |
− | <syntaxhighlight> | + | Die Funktion prüft, ob das übergebene Datum in der Sommerzeit liegt (Rückgabewert: True). |
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
function funIstSommerzeit(Datum: TDateTime): boolean; | function funIstSommerzeit(Datum: TDateTime): boolean; | ||
var | var | ||
Line 41: | Line 43: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
Beispiel für einen Aufruf der Funktion: | Beispiel für einen Aufruf der Funktion: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
uses | uses | ||
...DateUtils... | ...DateUtils... | ||
Line 58: | Line 61: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 08:10, 12 February 2020
│
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;