AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt. ist?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt. ist?

Ein Thema von Framige · begonnen am 4. Mai 2003 · letzter Beitrag vom 26. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Framige

Registriert seit: 4. Mai 2003
Ort: Bad Münstereifel
13 Beiträge
 
Delphi 7 Professional
 
#1

Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt. ist?

  Alt 4. Mai 2003, 01:49
Tag auch,
wie kann ich feststellen, welche Zeitzone (Sommerzeit oder Winterzeit) momentan gültig ist?

Danke euch fürs erste ...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 4. Mai 2003, 02:27
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Framige

Registriert seit: 4. Mai 2003
Ort: Bad Münstereifel
13 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 4. Mai 2003, 10:40
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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 4. Mai 2003, 13:11
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Specialwork
Specialwork

Registriert seit: 10. Jan 2003
Ort: Schwall
71 Beiträge
 
Delphi 8 Professional
 
#5
  Alt 4. Mai 2003, 22:55
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

Thomas van Veen
Es gibt keine Probleme, nur Lösungen, auf die man nicht gleich kommt !
  Mit Zitat antworten Zitat
Framige

Registriert seit: 4. Mai 2003
Ort: Bad Münstereifel
13 Beiträge
 
Delphi 7 Professional
 
#6
  Alt 8. Mai 2003, 22:35
@Specialwork
Specialdank für die Unterstützung.
Echt Klasse hier, das man so schnell Lösungen erhält.
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.

  Alt 25. Mär 2008, 16:13
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.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.

  Alt 25. Mär 2008, 16:32
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}
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.

  Alt 25. Mär 2008, 16:40
Danke.
Funktioniert.
Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#10

Re: Wie ermittle ich, welche Zeitzone (Sommer/Winter) z.Zt.

  Alt 25. Mär 2008, 16:44
Das gepostete IsSummertime funktioniert aber nicht überall, oder?

GetTimeZoneInformation liefert doch folgenden Rückgabewert:
Zitat:
TIME_ZONE_ID_UNKNOWN 0 Daylight saving time is not used in the current time zone, because there are no transition dates.

TIME_ZONE_ID_STANDARD 1 The system is operating in the range covered by the StandardDate member of the TIME_ZONE_INFORMATION structure.

Windows Me/98/95: This value is returned if daylight saving time is not used in the current time zone, because there are no transition dates.
TIME_ZONE_ID_DAYLIGHT 2 The system is operating in the range covered by the DaylightDate member of the TIME_ZONE_INFORMATION structure.
Darüber hinaus steht in der Struktur drin, wann es damit los geht und wann es aufhört. Damit funktioniert das auch außerhalb von Mitteleuropa. Die allgemeineren Funktionen GetDynamicTimeZoneInformation und GetTimeZoneInformationForYear stehen erst ab Vista bzw. Vista SP1 zur Verfügung, wären aber noch besser, weil sie weitere Gegebenheiten berücksichtigen.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:22 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