Difference between revisions of "Daylight saving time/de"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category already in page template)
 
Line 1: Line 1:
 
{{Daylight saving time}}
 
{{Daylight saving time}}
<br>
+
 
Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981.<br>
+
Sommerzeitberechnung der Bundesrepublik Deutschland ab dem Jahr 1981.
Die Funktion prüft, ob das übergebene Datum in der Sommerzeit liegt (Rückgabewert: True).<br>
+
 
<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>
<br>
+
 
 
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>
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 05:17, 16 July 2013 (UTC)
 
 
 
{{AutoCategory}}
 
[[Category:Code Snippets/de]]
 

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;