![]() |
TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Hallo,
für TzSpecificLocalTimeToSystemTime und SystemTimeToTzSpecificLocalTime wird laut MSDN WinXP benötigt. Gibt es entsprechende Funktionen auch für Win9x, NT und 2000? Gruss |
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
MS sagt an anderer Stelle auch noch:
Zitat:
|
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Dann muss ich eben die Funktionen selber erstellen. Über TIME_ZONE_INFORMATION und GetTimeZoneInformation bekommt ja alles Nötige.
Trotzdem danke |
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Was haltet hier von folgenden von mir geschriebenen Code:
Delphi-Quellcode:
DateUtils muss eingebunden werden!
function GetDateTimeForBiasSystemTime(GivenDateTime : TSystemTime; GivenYear : integer) : TDateTime;
var Year, Month, Day : word; Hour, Minute, Second, MilliSecond : word; begin GivenDateTime.wYear := GivenYear; while not TryEncodeDayOfWeekInMonth(GivenDateTime.wYear, GivenDateTime.wMonth, GivenDateTime.wDay, GivenDateTime.wDayOfWeek, Result) do Dec(GivenDateTime.wDay); DecodeDateTime(Result, Year, Month, Day, Hour, Minute, Second, MilliSecond); Result := EncodeDateTime(Year, Month, Day, GivenDateTime.wHour, GivenDateTime.wMinute, GivenDateTime.wSecond, GivenDateTime.wMilliseconds); end; function GetBiasForDate(GivenDateTime : TDateTime) : integer; var tzi : TIME_ZONE_INFORMATION; begin GetTimeZoneInformation(tzi); if (GivenDateTime < GetDateTimeForBiasSystemTime(tzi.StandardDate, YearOf(GivenDateTime))) and (GivenDateTime >= GetDateTimeForBiasSystemTime(tzi.DaylightDate, YearOf(GivenDateTime))) then Result := (tzi.Bias + tzi.DaylightBias) * -1 else Result := (tzi.Bias + tzi.StandardBias) * -1; end; function UTCToLocalDateTime(aUTC : TDateTime) : TDateTime; begin Result := IncMinute(aUTC, GetBiasForDate(aUTC)); end; function LocalDateTimeToUTC(aLocal : TDateTime) : TDateTime; begin Result := IncMinute(aUTC, GetBiasForDate(aUTC) * -1); end; Soweit ich es bis jetzt überblickt habe, wird für das entsprechende Datum der korrekte Unterschied in Minuten (Bias) zur UTC Zeit zurückgeliefert und das gegebene Datum entsprechend der verwendeten Funktion umgerechnet. Diese Funktionen sollten auch unter Win9x nutzbar sein. Für XP System kann man auch die ![]() Was kann man an den oben von mir geposteten Funktionen noch verbessern? Gruss |
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Zitat:
* -1??? |
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Ja! Der Bias wird nach dem Schema berechnet bias = UTC - local time (
![]()
Delphi-Quellcode:
Gruss
Bias := Bias * -1
|
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
kp, aber ich dacht immer man müsste * (-1) schreiben...
|
Re: TzSpecificLocalTimeToSystemTime für Win9x, NT, 2000?
Sommer und Winterzeit sollten ja hier auch automatisch berücksichtigt werden oder?
letzte funktion sollte wahrscheinlich so aussehen
Delphi-Quellcode:
function LocalDateTimeToUTC(aLocal : TDateTime) : TDateTime;
begin Result := IncMinute(aLocal, GetBiasForDate(aLocal) * -1); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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