Hallo,
ich möchte abhängig von einer gewählten Zeitzone die Zeitangaben einer Website anpassen. Versucht habe ich es so:
Code:
function get_time_str($timestamp, $format, $user_timezone_offset)
{
$gm_time = gmmktime(); // greenwich mean time (GMT)
$server_time = time();
$server_time_offset = $server_time - $gm_time;
return date($format, $timestamp + $user_timezone_offset - $server_time_offset);
}
Hinter dem Code steckt folgende Überlegung:
Zuerst wird mit
gmmktime der aktuelle Timestamp in der Greenwich-Zeitzone (GMT) ermittelt. Anschließend ermittle ich mit
time den Timestamp mit der Zeitzone, die der Server eingestellt hat. Aus der Differenz erhalte ich nun die am Server eingestellte Zeitzone (als Sekunden-Offset bezogen auf die GMT).
Vom zu formatierenden Timestamp ziehe ich nun den Offset des Servers ab und addiere den Offset des Benutzers.
Ist mein Vorgehen denn richtig?
Mein Problem ist nämlich, dass bei meinem Hoster
$gm_time und
$server_time identisch sind. Somit erhalte ich bei gewähltem Offset
3600 (GMT+1) eine Zeitangabe, die um 1 Stunde zu hoch ist.
Ich möchte nicht in der
php.ini oder ähnlichem Dinge anpassen müssen, sondern ausschließlich Standard-PHP-Funktionen verwenden.
Grüße, Matze