AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wann beginnt bei einem Jahr x die Sommerzeit ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wann beginnt bei einem Jahr x die Sommerzeit ?

Ein Thema von hoika · begonnen am 10. Jan 2014 · letzter Beitrag vom 14. Jan 2014
Antwort Antwort
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#1

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 12. Jan 2014, 22:45
@Furtbichler,

die Funktion ist ungenau.

Für das Jahr 2018 kriege ich den 1.04.2018 als Sommerzeitbeginn,
weil der 1.04.2018 ein Sonntag ist.

Delphi-Quellcode:
Function AnfangDerSommerzeit(Jahr : Word) : TDateTime;
Begin
   result := EncodeDate(Jahr,4,1);
   result := (result - DayOfWeek(Result))+1;
End;
Es ist auch nur ein kleiner Fehler drin (das war der Intelligenztest )
Delphi-Quellcode:
Function AnfangDerSommerzeit(Jahr : Word) : TDateTime;
Begin
   result := EncodeDate(Jahr,4,1) - 1; // letzter Tag im März, statt erster Tag im April :o)
   result := (result - DayOfWeek(Result))+1;
End;
Ups, danke Sir Rufo,

ich hab gerade so was gemacht und vom Aussehen her gefällt mir es nicht:
Delphi-Quellcode:
Function AnfangDerSommerzeit(Jahr : Word) : TDateTime;
Begin
 if DayOfweek(EncodeDate(Jahr,4,1)) > 1 then
   result := EncodeDate(Jahr,4,1)
 else
   result := EncodeDate(Jahr,3,31);

   result := (result - DayOfWeek(Result))+1;
End;
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 06:28
Ups, danke Sir Rufo,
Dem schließe ich mich an.
Zitat:
ich hab gerade so was gemacht und vom Aussehen her gefällt mir es nicht:
Lass es doch so wie von Sir Rufo korrigiert.
Meine erste Version war übrigens:
Delphi-Quellcode:
Result := EncodeDate(Year,4,1);
Repeat
  Result := Result - 1;
Until DayOfWeek(Result)=1;
Ich persönlich finde die Schleife leichter verständlich: Nimm den 1.April und zähle dann Rückwärts bis zum letzten Sonntag im März.

Nach kurzem Studium der DateUtils würde ich doch folgende Version nehmen:
Delphi-Quellcode:
Function LastSundayInMarch(Year : Word) : TDateTime;
Begin
  Result := EncodeDate(Year,4,1);
  Result := Result - DateUtils.DayOfTheWeek(Result);
End;
Gut zu wissen, das 'DayOfTheWeek' und 'DayOfWeek' unterschiedliche Ergebnisse liefern

Geändert von Furtbichler (13. Jan 2014 um 06:55 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 06:37
Hallo,

ich habe das jetzt ähnlich umgesetzt,
also mit einer Schleife, die ab dem 31.3. solange rückwärts zählt,
bis ein Sonntag rauskommt (es sei denn, der 31.3. ist bereits ein Sonntag).

Und ich habe auch Unit-Tests dazugepackt

Übrigens:
Das mit dem Result :=
gibt es meines Wissens bereits seit Turbo-Pascal.


Heiko
Heiko
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 06:56
Und ich habe auch Unit-Tests dazugepackt
Zeig mal!
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 08:32
Damit die Funktion allgmein einsetzbar wird, sollten aber keine Konstanten für, Monat, Wochentag und Sequenz verwendet werden sondern die aus der TTimeZoneInformation Struktur.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.582 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 09:11
Damit die Funktion allgmein einsetzbar wird, sollten aber keine Konstanten für, Monat, Wochentag und Sequenz verwendet werden sondern die aus der TTimeZoneInformation Struktur.
Du meinst so ähnlich, wie in #6 ?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Wann beginnt bei einem Jahr x die Sommerzeit ?

  Alt 13. Jan 2014, 09:14
Ja. In den letzten Beispielen wurde ja immer konstant mit April, Sonntag und "letzter" gearbeitet.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz