![]() |
Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt. ist?
Tag auch,
wie kann ich feststellen, welche Zeitzone (Sommerzeit oder Winterzeit) momentan gültig ist? Danke euch fürs erste ... |
Moin Framige,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Zu Deinem Problem: Schau Dir doch mal die API Funktion GetTimeZoneInformation an. Das müsste genau das richtige für Dich sein. |
Moin Christian,
erst einmal danke für die Begrüßung. Ich bin Novize, was Delphi angeht, arbeite aber schon seit 12 Jahren mit BorlandPascal. Von daher fehlt mir eigentlich nur der Überblick, wie ich was und wo einbinde. Und natürlich die ganzen Möglichkeiten, die Delphi so bietet. Ich glaube, ich mach mal einen Einführungskurs irgendwo mit. Na dann muß ich mal schauen, wie ich diese API einbinden kann. TX P.S. Das Moin kommt mir sehr bekannt vor, habe fast 21 Jahre in FL gelebt. |
Moin Framige,
viele API Funktionen brauchst Du nicht selber einzubinden, sie befinden sich in diversen Units, die Delphi mitbringt. Meist heissen diese so wie die zugehörige Headerdatei. Was in WINBASE.H usw. deklariert ist, dürfte sich wohl in der Unit Windows befinden, die eh' standardmässig eingebunden wird. GetTimeZoneInformation ist dort zu finden. I.d.R. werden bei Delphi keine Deklarationen mitgeliefert, die in unterschiedlichen Betriebbsystemversionen unterschiedlich deklariert werden müssen, bzw. die es nur für die NT Schiene gibt. |
Hallo Framige,
Das geht so !
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure Logg(Value: String); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Logg(Value: String); begin Memo1.Lines.Add(Value); end; procedure TForm1.Button1Click(Sender: TObject); var TimeZoneInformation: TTimeZoneInformation; begin GetTimeZoneInformation(TimeZoneInformation); Logg(inttostr(TimeZoneInformation.Bias)); Logg(String(TimeZoneInformation.StandardName)); Logg(String(TimeZoneInformation.DaylightName)); // ... usw. end; end. Gruß, Tom :bounce1: |
@Specialwork
Specialdank für die Unterstützung. Echt Klasse hier, das man so schnell Lösungen erhält. |
Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.
Hallo,
ich habe den letzten Tipp verwendet. Das Resultat ist: -60 Westeuropäische Normalzeit Westeuropäische Sommerzeit Woran bitte erkenne ich denn nun das bei mir aktuell noch Winterzeit herscht? Oder dass nächste Woche Sommerzeit ist? Gruß Holger. :gruebel: |
Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.
Aus der unit SRUtils von Simon Reinhardt:
Delphi-Quellcode:
function IsSummertime(ADate:TDateTime):boolean;
var AYear, AMonth, ADay : word; Beginn, Ende : TDateTime; begin try ADate := trunc(ADate); DecodeDate(ADate, AYear, AMonth, ADay); if AYear < 1980 then { Keine Sommerzeit vor 1980 } Result := False else begin { Beginn der Sommerzeit: } Beginn := EncodeDate(AYear, 3, 31); while DayOfWeek(Beginn) <> 1 do Beginn := Beginn-1; { Ende der Sommerzeit: } if AYear <= 1995 then { bis 1995: letzter So im September } Ende := EncodeDate(AYear, 9, 30) else { ab 1996: letzter So im Oktober } Ende := EncodeDate(AYear, 10, 31); while DayOfWeek(Ende) <> 1 do Ende := Ende - 1; Result := (ADate>=Beginn) and (ADate<Ende); end; except Result := False; end; end; {IsSummertime} |
Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.
Danke.
Funktioniert. |
Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.
Das gepostete IsSummertime funktioniert aber nicht überall, oder?
GetTimeZoneInformation liefert doch folgenden Rückgabewert: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz