AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Sommer/ Winterzeit mit Anfang und Ende als String

Sommer/ Winterzeit mit Anfang und Ende als String

Ein Thema von FarAndBeyond · begonnen am 28. Mär 2016 · letzter Beitrag vom 28. Mär 2016
Antwort Antwort
FarAndBeyond
(Gast)

n/a Beiträge
 
#1

Sommer/ Winterzeit mit Anfang und Ende als String

  Alt 28. Mär 2016, 01:06
Mein Ansatz sieht im Moment so aus... (hab' das so in meine Shell eingebaut...)
Vielleicht kann das ja mal jemand gebrauchen...
Es sei denn, der Jemand hat schon 'ne viel bessere, intelligentere, kürzere und schnellere Function... dann bleibt er besser bei der...

btw: die innere Funktion hab' ich irgendwo gefunden... weiß allerdings bei fast 900 TXT-Dateien nicht mehr genau wo....

Delphi-Quellcode:
Function SummerWinterTime(ADate: TDateTime): String;
  Var
   AYear,AMonth,ADay: Word;
   Beginn,Ende : TDateTime;
   WinterTime : String;

  Function IsSummertime(ADate: TDateTime): Boolean;
   Begin
    Result:= False;
    ADate := Trunc(ADate);
    DecodeDate(ADate, AYear, AMonth, ADay);
     If AYear < 1980 { Keine Sommerzeit vor 1980 }
     Then Result:= False
     Else
      Begin
       Beginn:= EncodeDate(AYear, 3, 31);
        While DayOfWeek(Beginn) <> 1
        Do Beginn:= Beginn -1;

        If AYear <= 1995
        Then Ende:= EncodeDate(AYear, 9, 30) { bis 1995: letzter So im September }
        Else Ende:= EncodeDate(AYear, 10, 31); {  ab 1996: letzter So im Oktober   }

        While DayOfWeek(Ende) <> 1
        Do Ende:= Ende -1;
       Result:= (ADate >= Beginn) And (ADate < Ende);
      End;
   End;

 Begin
  If IsSummertime(ADate)
  Then Result:= 'SOMMERZEIT'+#13#10+FormatDateTime('dd.mm.yyyy', Beginn)+' 02:00 -> 03:00'+#13#10+FormatDateTime('dd.mm.yyyy', Ende)+' 03:00 -> 02:00'
  Else
   Begin
    WinterTime:= 'WINTERZEIT';

      If ADate > StrToDateTime('05.05.'+IntToStr(AYear))
      Then
       Begin
        WinterTime:= WinterTime +#13#10+FormatDateTime('dd.mm.yyyy', Ende)+' 03:00 -> 02:00';
         IsSummertime(StrToDate('05.05.'+IntToStr((AYear +1))));
        Result:= WinterTime+#13#10+FormatDateTime('dd.mm.yyyy', Beginn)+' 02:00 -> 03:00';
       End
      Else
       Begin
         IsSummertime(StrToDate('05.05.'+IntToStr((AYear -1))));
        WinterTime:= WinterTime +#13#10+FormatDateTime('dd.mm.yyyy', Ende)+' 03:00 -> 02:00';
         IsSummertime(StrToDate('05.05.'+IntToStr((AYear +1))));
        Result:= WinterTime+#13#10+FormatDateTime('dd.mm.yyyy', Beginn)+' 02:00 -> 03:00';
       End;

   End;
 End;
Delphi-Quellcode:
// MEMO:
If (Key = Ord('W')) And (ssCtrl In Shift)
Then
 Begin
  Memo.SelLength:= 0;
  Memo.SelText := #13#10+#13#10+SummerWinterTime(Now);
 End;

// LABEL:
Label1.Caption:= SummerWinterTime(Now);
Bei dieser Formatierung braucht man allerdings 'ne Monospaced Schriftart, sonst sieht das aus wie Kraut und Rüben...

Hat vielleicht noch jemand Verbesserungsvorschläge???
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Sommer/ Winterzeit mit Anfang und Ende als String

  Alt 28. Mär 2016, 01:24
Diese Informationen bekommt man auch vom Betriebssystem (und werden dort auch aktuell gehalten)

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#3

AW: Sommer/ Winterzeit mit Anfang und Ende als String

  Alt 28. Mär 2016, 01:56
Stimmt, die API... da hatte ich noch gar nicht geschaut...
Funzt ab VistaSP1, aber für XP geht wahrscheinlich auch "GetTimeZoneInformation"... muß ich mir mal in Ruhe anschauen...
Danke...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz