Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
Delphi 12 Athens
|
AW: Zeitumrechnung möglich?
25. Sep 2012, 15:56
Ich habe es nicht getestet (und evtl. auch wieder zu kompliziert gedacht), aber klappt das hier?
Delphi-Quellcode:
uses DateUtils;
function ArizonaTimeToMEZ(aDateTime: TDateTime): TDateTime;
const
UTC_DIFF = 7;
SUMMERTIME_RELEVANTHOUR = 2;
function UTCToMEZ(aDateTime: TDateTime): TDateTime;
var
SummerTimeStart, SummerTimeEnd: TDateTime;
Year: word;
function LastDayOfWeekOfMonth(Year, month: Integer; DayOfWeek: word): TDate;
var
temp: TDate;
begin
temp := IncMonth(EncodeDate(Year, month, 1));
Result := IncDay(temp, (DayOfWeek - DayOfTheWeek(temp) + DaysPerWeek)
mod DaysPerWeek - DaysPerWeek);
end;
begin
Year := YearOf(aDateTime);
SummerTimeStart := LastDayOfWeekOfMonth(Year, MonthMarch, DaySunday);
SummerTimeStart := IncHour(DateOf(SummerTimeStart), SUMMERTIME_RELEVANTHOUR);
SummerTimeEnd := LastDayOfWeekOfMonth(Year, MonthOctober, DaySunday);
SummerTimeEnd := IncHour(DateOf(SummerTimeEnd), SUMMERTIME_RELEVANTHOUR);
Result := aDateTime;
if DateTimeInRange(aDateTime, SummerTimeStart, SummerTimeEnd) then
Result := IncHour(Result);
end;
begin
Result := UTCToMEZ(IncHour(aDateTime, UTC_DIFF));
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
Geändert von DeddyH (25. Sep 2012 um 16:04 Uhr)
Grund: Denkfehler gefunden und korrigiert
|