Sign in Join
Wiki copytemporary

Daylight saving time/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Daylight saving time/de

OldNewLine
1+Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981.
2+
3+Die Funktion prüft, ob das übergebene Datum in der Sommerzeit liegt (Rückgabewert: True).
4+
5+``` pascal
6+function funIstSommerzeit(Datum: TDateTime): boolean;
7+var
8+ wrdJahr: word;
9+ wrdMonat: word;
10+ wrdTag: word;
11+ datSommerzeit: TDatetime;
12+ datWinterzeit: TDateTime;
13+
14+begin
15+
16+ Result := False;
17+
18+ DecodeDate(Datum, wrdJahr, wrdMonat, wrdTag);
19+ if wrdJahr < 1981 then
20+ exit;
21+
22+ // Beginn der Sommerzeit:
23+ // letzter Sonntag im März um 2:00 Uhr
24+ datSommerzeit := EncodeDate(wrdJahr, 3, 31);
25+ datSommerzeit := datSommerzeit - (DayOfWeek(datSommerzeit) - 1) +
26+ Frac(StrToTime('02:00'));
27+
28+ // Ende der Sommerzeit:
29+ // von 1981 bis 1995 letzter Sonntag im September um 3:00 Uhr
30+ // ab 1996 letzter Sonntag im Oktober um 3:00 Uhr
31+ if wrdJahr <= 1995 then
32+ datWinterzeit := EncodeDate(wrdJahr, 9, 30)
33+ else
34+ datWinterzeit := EncodeDate(wrdJahr, 10, 31);
35+
36+ datWinterzeit := datWinterzeit - (DayOfWeek(datWinterzeit) - 1) +
37+ Frac(StrToTime('03:00'));
38+
39+ Result := (Datum >= datSommerzeit) and (Datum < datWinterzeit);
40+
41+end;
42+```
43+
44+Beispiel für einen Aufruf der Funktion:
45+
46+``` pascal
47+uses
48+...DateUtils...
49+
50+function funTest: string;
51+begin
52+
53+ // 10. Oktober 1990, 14:34:56
54+ if funIstSommerzeit(EncodeDateTime(1990,10,10,14,34,56,00);) = False then
55+ Result := 'Normalzeit'
56+ else
57+ Result := 'Sommerzeit';
58+
59+end;
60+```
61+
62+---
63+*From the Free Pascal wiki, page "Daylight saving time/de", as it stood on 2020-02-12 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history