AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitumrechnung möglich?

Ein Thema von Chriscode · begonnen am 25. Sep 2012 · letzter Beitrag vom 26. Sep 2012
Antwort Antwort
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 14:23
Vielen Dank für eure Antworten.

Leider hört sich das ganze relativ kompliziert und für mich als Anfänger nahezu nicht umsetzbar an.

Gibt es keine einfachere Möglichkeit? z.B. Datum und Zeit in einen Timestamp zu konvertieren und daraus die richtige Zeit holen?

LG,
Chris
Schau dir mal StrToDateTime / TryToStrDateTime an. Dazu das Gegenstück: FormatDateTime. Kann sein, dass ich jetzt was mit PHP verwechsel, aber imho konntest du beim Datumsformat auch irgendwas mit Zeitzonen angeben. Aber wie schon gesagt ... Wahrscheinlich verwechsel ich da grad was mit PHP.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 14: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 15:04 Uhr) Grund: Denkfehler gefunden und korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 15:08
Ich habe kurz eine allgemeine Klasse gebastelt, vielleicht kannst Du mit der was anfangen, gegf. musst Du sie noch etwas aufbohren.
Angehängte Grafiken
Dateityp: png TimeZone.png (18,8 KB, 42x aufgerufen)
Angehängte Dateien
Dateityp: zip TimeZoneCalc_EXE.zip (473,6 KB, 21x aufgerufen)
Dateityp: zip TimeZoneCalc_SRC.zip (3,2 KB, 43x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (25. Sep 2012 um 16:34 Uhr) Grund: Fehler / Daylightdate wurde ignoriert
  Mit Zitat antworten Zitat
Chriscode

Registriert seit: 18. Aug 2009
32 Beiträge
 
#4

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 16:16
Hallo nochmals,
vielen vielen Dank für die zahlreichen, schnellen und sehr hilfreichen Antworten.

Sowohl die Codelösung von DeddyH als auch die Alternative von Bummi funktionieren, ich bin zusätzlich dank Jonas Shinaniganz noch auf folgende Lösung aufmerksam geworden: http://code.google.com/p/delphi-tzdb/

Damit kann man von einer Timezone in Universalzeit und von dort in eine andere Timezone umwandeln.

Jetzt bin ich unsicher welche Lösung die "beste", also sicherste und zuverlässigste ist. Insbesondere in Bezug auf Sommer/Winterzeit und Kalenderbesonderheiten.

LG,
Chris
Chris
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 16:30
Meine ist sicherlich nicht die beste, da sie nur von Arizona nach Mitteleuropa umrechnet. Die anderen sind universeller.
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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 16:35
Ich hatte noch einen bösen Bug drin ... DayLightDate wurde nicht berücksichtigt ist behoben.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.783 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 19:07
ich bin zusätzlich dank Jonas Shinaniganz noch auf folgende Lösung aufmerksam geworden: http://code.google.com/p/delphi-tzdb/

Damit kann man von einer Timezone in Universalzeit und von dort in eine andere Timezone umwandeln.
#8

Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Chriscode

Registriert seit: 18. Aug 2009
32 Beiträge
 
#8

AW: Zeitumrechnung möglich?

  Alt 25. Sep 2012, 20:24
Uwe,
entschuldige bitte vielmals. Der Hinweis kann selbstverständlich von dir, mein Fehler. Da ich versucht habe möglichst alle Antworten direkt zu verwerten bin ich etwas durcheinander gekommen. Von Jonas kam der Hinweis auf TTimezone welches auf dem von dir empfohlenen Projekt nochmals erwähnt wird.

Ich werde alle drei Lösungen nun noch einmal ausgiebig testen und dann schauen womit ich mich am sichersten fühle. Ggf. könnte ich auch alle Lösungen nehmen und dann das Ergebnis zur Sicherheit vergleichen.

Für die schnelle und kompetente Hilfe noch einmal vielen Dank an alle Beteiligten. Es ist wirklich schön, dass dieses Forum Delphi am Leben hält und zeigt was damit alles möglich ist.

LG,
Chris
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
794 Beiträge
 
#9

AW: Zeitumrechnung möglich?

  Alt 26. Sep 2012, 04:41
Halb OT:

Ich wäre froh, wenn das auch mal jemand Microsoft erklären könnte. Ich ärgere mich seit 2 Jahren damit rum, dass live (bzw. hotmail / outlook.com) beim Synchronisieren mit WP7 und Outlook die Geburtstage immer um 1 Tag verschiebt. Das passiert auch nicht in allen Zeitzonen (aber leider in unserer) und seit einem Update auch nur noch bei Geburtstagen, die in die Sommerzeit fallen.

Das Thema scheint also wirklich nicht trivial zu sein, auch wenn ich mich frage, wieso man überhaupt bei Geburtstagen mit Uhrzeiten/Zeitzonen rechnet...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.783 Beiträge
 
Delphi 12 Athens
 
#10

AW: Zeitumrechnung möglich?

  Alt 26. Sep 2012, 10:30
Uwe,
entschuldige bitte vielmals.
So hatte ich das nicht gemeint. Deine Formulierung las sich für mich so, als seist du erst auf Umwegen zu dem Link gekommen, den ich ja (zugegeben nur knapp kommentiert) bereits gepostet hatte.

Es passiert mir auch manchmal, daß genau in dem Moment, wo ich auf Antworten klicke, plötzlich ein oder mehrere zusätzliche Beiträge da sind, die ich dann leicht übersehe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:39 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