![]() |
Abweichung von UTC bekommen
Hi,
ich muss ein Datum + Uhrzeit in folgenden Format darstellen: Zitat:
Bisher habe ich nur folgendes:
Delphi-Quellcode:
Gibt es eine Funktion die mir diese Abweichung übergibt?var bla: String; begin bla:= FormatDateTime('yyyy-mm-ddhh:nn:ss', Now); Insert('T', bla, 9); |
Re: Abweichung von UTC bekommen
Zitat:
|
Re: Abweichung von UTC bekommen
Ich habe mir das im PSDK mal angeschaut. Aber wie verwende ich das?
Zitat:
|
Re: Abweichung von UTC bekommen
Z.B. so:
Delphi-Quellcode:
var
tzi : TTimeZoneInformation; begin GetTimeZoneInformation(tzi); MessageDlg(intToStr(tzi.Bias), mtWarning, [mbOK], 0); end; |
Re: Abweichung von UTC bekommen
Hmm... das gibt mir jetzt -60 zurück. Also -1 Stunde. Haben wir hier in Deutschland nicht +1 Stunde?
|
Re: Abweichung von UTC bekommen
Sommer- und Winterzeit berücksichtigt?
|
Re: Abweichung von UTC bekommen
Zitat:
|
Re: Abweichung von UTC bekommen
In dem du sie entsprechend dazu addierst oder abziehst oder wie auch immer. Und bevor du fragst:
![]() |
Re: Abweichung von UTC bekommen
Auf den von dir verlinkten Artikel war ich ja schon. Aber dort steht nirgendwo was wie man herausbekommt ob gerade Sommer- oder Winterzeit ist. Wie lautet denn die benötigte Funktion?
|
Re: Abweichung von UTC bekommen
Delphi-Quellcode:
// liefert den Abstand der lokalen Zeit zu UTC
// UTC = lokaleZeit + GetTimeZoneBias function GetTimeZoneBias:TDateTime; const MINUTES_PER_DAY = 24.0 * 60.0; var tzi : TTimeZoneInformation; begin case GetTimeZoneInformation(tzi) of TIME_ZONE_ID_STANDARD: result := (tzi.Bias) / MINUTES_PER_DAY; TIME_ZONE_ID_DAYLIGHT: // Sommerzeit Result := (tzi.Bias+tzi.DaylightBias) / MINUTES_PER_DAY; else Result := 0.0; end; end; |
Re: Abweichung von UTC bekommen
Zitat:
Zitat:
|
Re: Abweichung von UTC bekommen
Ich dachte immer DayLight heißt Tageslicht :|
|
Re: Abweichung von UTC bekommen
*den Namen zu "René Descartes" wechsel*
Die Sommerzeit heißt im Englischen "Daylight Saving Time" oder kurz DST. *wieder Benjamin bin* |
Re: Abweichung von UTC bekommen
Zitat:
|
Re: Abweichung von UTC bekommen
Hab den Code jetzt ein bisschen modifiziert. Bekomme jetzt aber -2 Stunden:
Delphi-Quellcode:
function TXSPF.GetTimeZoneBias:String;
var tzi : TTimeZoneInformation; begin case GetTimeZoneInformation(tzi) of TIME_ZONE_ID_STANDARD: result := intToStr(tzi.Bias div 60); TIME_ZONE_ID_DAYLIGHT: // Sommerzeit Result := IntToStr((tzi.Bias + tzi.DaylightBias) div 60); else Result := '00'; end; end; |
Re: Abweichung von UTC bekommen
Man vergleiche:
shmia:
Delphi-Quellcode:
du:
function GetTimeZoneBias:TDateTime;
const MINUTES_PER_DAY = 24.0 * 60.0; var tzi : TTimeZoneInformation; begin case GetTimeZoneInformation(tzi) of TIME_ZONE_ID_STANDARD: result := (tzi.Bias) / MINUTES_PER_DAY; TIME_ZONE_ID_DAYLIGHT: // Sommerzeit Result := (tzi.Bias+tzi.DaylightBias) / MINUTES_PER_DAY; else Result := 0.0; end; end;
Delphi-Quellcode:
function TXSPF.GetTimeZoneBias:String;
var tzi : TTimeZoneInformation; begin case GetTimeZoneInformation(tzi) of TIME_ZONE_ID_STANDARD: result := intToStr(tzi.Bias div 60); TIME_ZONE_ID_DAYLIGHT: // Sommerzeit Result := IntToStr((tzi.Bias + tzi.DaylightBias) div 60); else Result := '00'; end; end; |
Re: Abweichung von UTC bekommen
Wenn ich div (24 * 60) verwende, bekomme ich als Ergebniss 30. :wiejetzt:
|
Re: Abweichung von UTC bekommen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ggf wäre noch folgendes zu beachten: GetTimeZoneInformation gibt aktuellen Bias also passend zum Systemdatum zurück. Das wäre heute den 24.05.2007 die Sommerzeit, also +02:00. Wenn der HEUTE zu konvertierende Zeitpunkt z.B. der 18.02.2007 16:30 ist, so galt am 18.02.2007 aber die Normal(Winter)zeit also +01:00. 18.02.2007 16:30 --> "18.02.2007T16:30:00+02:00" wär damit falsch! Besonders interessant wird die Geschichte in den Nächten der Umstellung. Aber vielleicht denke ich ja auch zu komplizert?!? alex |
Re: Abweichung von UTC bekommen
Die Unit beinhaltet genau das was ich brauche: DateTime2XML und wieder zurück :-)
Danke. Darf man die mit einer OpenSource-Komponente weitergeben? |
Re: Abweichung von UTC bekommen
Zitat:
Wichtig ist auch die Formel : UTC = lokaleZeit + GetTimeZoneBias Folgende Zeile zeigt die Zeit nach UTC an:
Delphi-Quellcode:
Der Abstand zwischen UTC und Lokaler Zeit ist:
ShowMessage(DateTimeToStr(Now + GetTimeZoneBias)+ '[UTC]');
lokaleZeit - UTC = -GetTimeZoneBias Man beachte das Minuszeichen das sich nach der Formelumstellung ergibt!! Also alles richtig; man muss es nur richtig interpretieren:
Delphi-Quellcode:
ShowMessage('Zeitunterschied lokale Zeit zu UTC: ' +TimeToStr(-GetTimeZoneBias));
|
Re: Abweichung von UTC bekommen
Zitat:
Ich würde aber noch die Diskussion abwarten. alex |
Re: Abweichung von UTC bekommen
Wenn ich jetzt noch nachfragen darf, auf welchen Wert habt ihr euch nun geeinigt? Während der Winterzeit und Sommerzeit? Ich habe gedacht, dass in Deutschland die Abweichung immer zu UTC 1h ist, denn die Engländer stellem auch auf Sommerzeit um. Jetzt habe ich mir aber überlegt, dass UTC sich nicht ändert, so wäre auch England, was im Winter UTC+0 ist im Sommer UTC+1 ist, demnach in Detuschland UTC+2 im Sommer.
Ist diese Überlegung so richtig? Demnach muss, wie es auch in der MSDN steht, Bias und DailightBias adiert werden um von der lokalen Zeit auf die UTC Zeit zu kommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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