Hallo alle zusammen...
ich habe mich in letzter Zeit sehr intensive mit folgender Frage beschäftigt:
Ich suche eine genaue und einfache Definition von Zeitumrechnungen, die PHP5-konform (also ohne "is_dst is depreciated", etc.) ist und spezialitäten wie Sommerzeit berücksichtigt.
Was ist brauche ist folgendes:
- In der Datenbank möchte ich nur GMT/UTC im sql-datumsformat speichern (z.b. "2006-06-08 12:12:12")
- alle Datumseingaben des Anwenders müssen automatisch in GMT konvertiert werden (inklusive Sommerzeit, Zeitzone, 29. Februar, etc.). Am besten ohne, dass dieser eine Einstellung vornehmen muss.
- die Zeiten aus der Datenbank möchte ich in dessen localer Zeit ausgeben, am besten mit einem date()-format String.
Ich glaube, dass ist garnicht schwer, aber im schieren Informationschaos habe ich dazu keine verständliche Beschreibung gefunden. In einer der letzten Ausgaben des PhpMagazins war ein ziemlich verkorkster Artikel, der auf mehreren Seite nur noch mehr Verwirrung gestiftet hat. Dabei muss es doch ein paar Zeilen Code geben, die genau dieses Problem beschreiben und irgend wann einmal ins PHP-Manual rein müssen.
interessante Lektüre:
- http://www.tutorials.de/forum/php/23...ezone_get.html
Detailfragen:
- Wie ermittelt PHP die lokale Zeit des Anwenders (aus dem HTTP-Header?)
- Was passiert, wenn die Urzeit auf dem Server falsch geht?
- kommt man um "Zeitzonen-Einstellung" für jeden Anwender (wie bei phpBB oder diesem Forum) überhaupt herum? Oder kann php5 die Zeitzone automatisch aus dem Request ermitteln?
Szenario:
- Hans und George arbeiten auf einem Server in Berlin, dessen Zeit 30 Minuten hinterher läuft.
- Hans arbeitet auf GMT+1 ("Berlin"). Seine lokale Uhrzeit geht 10 Minuten zu früh.
- George arbeitet auf GMT-5 ("New York"). Seine lokale Zeit geht eine eine Minute nach.
- Wenn Hans um Fri, 09 Jun 2006 10:00:00 GMT einen Beitrag schreibt und George fünf Minuten später antwortet, sollten die Zeiten auf dem Server auch fünf Minuten auseinander liegen aber lokal dennoch die "erwartete" Zeit relative zur eigenen zeigen.
Für alle Informationen (am besten Code-Fragmente) bin ich sehr sehr sehr dankbar.
tom / www.pixtur.de / www.streber-pm.org
Jetzt bin ich auf die Idee gekommen, Javascript zum Auslesen der aktuellen CLient-Uhrzeit zu verwenden.
Der Code sieht ungefähr so aus.
im login-form...
im submit...
Diese Sekunden würde ich auf jede Zeitangabe des Nutzer aufaddieren, bzw bei allen Zeitausgaben von GMT-Zeiten aus der Datenbank abziehen. Macht das Sinn, oder ist das die dümmste Idee aller Zeiten?
Bitte im Feedback...
tom
ich habe mich in letzter Zeit sehr intensive mit folgender Frage beschäftigt:
Ich suche eine genaue und einfache Definition von Zeitumrechnungen, die PHP5-konform (also ohne "is_dst is depreciated", etc.) ist und spezialitäten wie Sommerzeit berücksichtigt.
Was ist brauche ist folgendes:
- In der Datenbank möchte ich nur GMT/UTC im sql-datumsformat speichern (z.b. "2006-06-08 12:12:12")
- alle Datumseingaben des Anwenders müssen automatisch in GMT konvertiert werden (inklusive Sommerzeit, Zeitzone, 29. Februar, etc.). Am besten ohne, dass dieser eine Einstellung vornehmen muss.
- die Zeiten aus der Datenbank möchte ich in dessen localer Zeit ausgeben, am besten mit einem date()-format String.
Ich glaube, dass ist garnicht schwer, aber im schieren Informationschaos habe ich dazu keine verständliche Beschreibung gefunden. In einer der letzten Ausgaben des PhpMagazins war ein ziemlich verkorkster Artikel, der auf mehreren Seite nur noch mehr Verwirrung gestiftet hat. Dabei muss es doch ein paar Zeilen Code geben, die genau dieses Problem beschreiben und irgend wann einmal ins PHP-Manual rein müssen.
interessante Lektüre:
- http://www.tutorials.de/forum/php/23...ezone_get.html
Detailfragen:
- Wie ermittelt PHP die lokale Zeit des Anwenders (aus dem HTTP-Header?)
- Was passiert, wenn die Urzeit auf dem Server falsch geht?
- kommt man um "Zeitzonen-Einstellung" für jeden Anwender (wie bei phpBB oder diesem Forum) überhaupt herum? Oder kann php5 die Zeitzone automatisch aus dem Request ermitteln?
Szenario:
- Hans und George arbeiten auf einem Server in Berlin, dessen Zeit 30 Minuten hinterher läuft.
- Hans arbeitet auf GMT+1 ("Berlin"). Seine lokale Uhrzeit geht 10 Minuten zu früh.
- George arbeitet auf GMT-5 ("New York"). Seine lokale Zeit geht eine eine Minute nach.
- Wenn Hans um Fri, 09 Jun 2006 10:00:00 GMT einen Beitrag schreibt und George fünf Minuten später antwortet, sollten die Zeiten auf dem Server auch fünf Minuten auseinander liegen aber lokal dennoch die "erwartete" Zeit relative zur eigenen zeigen.
Für alle Informationen (am besten Code-Fragmente) bin ich sehr sehr sehr dankbar.
tom / www.pixtur.de / www.streber-pm.org
Jetzt bin ich auf die Idee gekommen, Javascript zum Auslesen der aktuellen CLient-Uhrzeit zu verwenden.
Der Code sieht ungefähr so aus.
im login-form...
Code:
echo "<input type=hidden id=user_timeoffset name=user_timeoffset>"; echo '<script type="text/javascript"> var now = new Date(); document.getElementById("user_timeoffset").value= (now.getHours() + ":" + now.getMinutes() +":"+ now.getSeconds()); ; </script>';
Code:
### guess time client time offset to gmt in seconds ### { ### store date-offsetset for this user ### if($time_offset= get('user_timeoffset')) { list($hour,$min,$sec) = explode(':',$time_offset); $client_day_seconds= $hour*60*60+ $min*60+ $sec; } ### get servertime ### list($hour,$min,$sec) = explode(':', gmdate('H:i:s', time())); $server_day_seconds= $hour*60*60+ $min*60+ $sec; $offset= $server_day_seconds - $client_day_seconds; if($offset < - 12*60*60) { $offset+= 24*60*60; } else if($offset > 12*60*60) { $offset-= 24*60*60; } log_message("usertime offset = $offset sec", LOG_MESSAGE_LOGIN_SUCCESS); }
Bitte im Feedback...
tom
Kommentar