Seite 2 von 3

Verfasst: 29.03.2004 19:17
von LuLa
Dennis Böge hat geschrieben:Evtl geht die Server-Uhr ja auch nochmal eine Stunde falsch...
Hui, das könnte sein. Gibt es in den USA überhaupt eine Sommerzeit?
Falls nein, dann müßte ja bei uns jeder Board-User sein Profil ändern... :o Puh!!

Code: Alles auswählen

zeit.php: 12:18
Meine PC-Zeit: 19:19

LG
LuLa

Verfasst: 29.03.2004 19:25
von Sujao
Soweit ich weiß gibt es in den USA keine Sommerzeit.

Verfasst: 30.03.2004 19:58
von sAnSiBaR
hi,

hab ein phpbb2.0.6 am laufen, und dort wird meines wissens nach (steht ja auch hier im thread) die zeit automatisch umgestellt.

schön und gut !

dabei wurden aber alle beiträge vor der umstellung auch automatisch +1h gesetzt.

welche änderungen muss ich unternehmen, damit die alten beiträge wieder ihre richtige uhrzeit bekommen ? (und die neuen natürlich ihre zeit behalten ?)

thx,

sansibar

Verfasst: 30.03.2004 20:07
von roger
Also normalerweise wird im Original-phpBB die Zeit nicht automatisch umgestellt, - dazu muss eine Änderung im Quelltext vorgenommen werden... Die amerikanischen Provider stellen genausowenig um wie die europäischen... Es wird über "I" in php ein Indikator für die Sommerzeit geliefert...

Du solltest im übrigen hier nachschauen...


roger

Verfasst: 30.03.2004 21:43
von sAnSiBaR
Hinweis: Die eingedeutschte Version von http://www.phpbb.de/download.php enthält den verbesserten Code bereits.
demnach ist meine version damit ausgestattet ?!

oder doch nicht ?

Verfasst: 30.03.2004 22:19
von roger
Wenn Du als Board-Zeit z.B. "GMT+1" eingestellt hast, sollte es mit der derzeit in Deutschland geltenden Uhrzeit übereinstimmen, :wink:
wenn nicht, dann wohl noch nicht...

roger

Verfasst: 30.03.2004 22:34
von Sujao
@sansibar: ich hatte mir damals auch 2.0.6 runtergeladen und ich hatte den Code NICHT drin. Ich zwar nicht mehr ob es "c" oder "d" war, aber es war so Ende Dezember.

Die Tatsache, dass auch bei allen alten Beiträgen eine Stunde addiert wird ist zwar nicht wirklich schlimm, aber doch irgendwie unschön. Eigentlich müsste ja nicht bei der Anzeige eine Stunde adiert werden sondern bei der Speicherung des Erstelldatums.

Verfasst: 31.03.2004 13:19
von Uruwa
Das Problem ist, dass die Codekorrektur selbst noch einen kleinen Fehler enthält. Dort wird wenn eine Stunde addiert, wenn das Systemdatum in die Sommerzeit fällt und nicht wie gewollt das zu formatierende Datum.

Die Zeile muss daher so aussehen:

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch)))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch))));

Verfasst: 31.03.2004 16:59
von Sujao
@uruwa: ich hab ehrlich gesagt nicht so genau verstanden was du meinst. Kannst du das bitte noch ein Mal anders erklären?

Verfasst: 31.03.2004 23:59
von Uruwa
O.K. ich mach das mal etwas ausführlicher. Alle Datums-/Zeitwerte werden in der Datenbank grundsätzlich als GMT+0 abgespeichert und bei der Ausgabe formatiert. Die genannte Codezeile gehört zur Funktion create_date, die diese Formatierung vornimmt.

Der Header der Funktion sieht wie folgt aus:

Code: Alles auswählen

function create_date($format, $gmepoch, $tz)
Die Paramter sind:
1. der Formatierungsstring, den Du im Adminbereich für das Board vorgibst, bzw. im Benutzerprofil eingestellt werden kann,
2. die auszugebende Zeit in GMT+0,
3. die Zeitzone.

Ich stelle jetzt mal die weiter oben genannte Anpassung für Sommerzeit meiner geänderten Codezeile gegenüber:

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I")))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I"))));

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch)))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch))));
Der Unterschied liegt hier:

Code: Alles auswählen

date("I", $gmepoch)
statt

Code: Alles auswählen

date("I")
Wir die PHP Funktion date ohne Datums-/Zeitwert aufgerufen, so wird die aktuelle Systemzeit des Servers verwendet. Die Folge: wenn die aktuelle Serverzeit in die Sommerzeit fällt werden alle Datums-/Zeitwerte um 1 Stunde verschoben. Daher muss natürlich die zu formatierdende Zeit als Datums-/Zeitwert an die date-Funktion übergeben werden, denn die soll ja wenn sie in die Sommerzeit fällt um 1 Stunde erhöht werden.

Ich hoffe, ich hab das jetzt einigermaßen verständlich erklärt...