• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP: User-Online-Script --> time() soll überall gleich sein!

Scubus

Neues Mitglied
Hallo Leute,

Ich code gerade an einem User-Online-Script. Dabei habe ich jetzt folgende Frage:

Wenn ich mit time(); die Zeit abfrage mit der dann das Script ausgeführt wird (Löschen der DB, Aktualisieren der DB, Abfrage der DB)...
Habe ich dann nicht das Problem dass Leute aus anderen Ländern unterschiedliche Werte für time(); bekommen? Das würde das ganze System zerstören...gibts da eine Lösung?
 
Werbung:
time() bezieht sich auf die Systemzeit des Servers, also auf die Zeitzone, wo der Server steht, wobei du das mit z.B default_timezone_set() ändern kannst.
 
time() bezieht sich auf die Systemzeit des Servers, also auf die Zeitzone, wo der Server steht, wobei du das mit z.B default_timezone_set() ändern kannst.
Das Problem dabei ist, dass ich z.B. sogar von zuhause aus Unterschiedliche Werte für time(); bekomme:

1. pc --> 1282302135
2. pc --> 1282302299

Die Einheit von time(); sind ja wohl Sekunden, demnach ist der Unterschied schon ziemlich gross...

Wenn ich ini_get('date.timezone'); ausgebe, dann bekomme ich bei BEIDEN PCs folgendes:

date.timezone: America/Phoenix
 
Werbung:
Beim Aufruf folgender Funktion solltest du Uhrzeit und Datum des Servers erhalten:
PHP:
echo date("d.m.Y H:i:s", time());
Wenn das Datum auf deine Zeitzone passt, brauchst du nichts verändern, ansonsten musst du default_timezone_set() anwenden.
 
Beim Aufruf folgender Funktion solltest du Uhrzeit und Datum des Servers erhalten:
PHP:
echo date("d.m.Y H:i:s", time());
Wenn das Datum auf deine Zeitzone passt, brauchst du nichts verändern, ansonsten musst du default_timezone_set() anwenden.

Joa, also in der Tat bekomme ich bei folgendem PHP-Code:

PHP:
date_default_timezone_set('America/Phoenix');
echo date("d.m.Y H:i:s", time());

Zwei unterschiedliche Zeiten...:

20.08.2010 05:59:58
20.08.2010 06:02:43

Das ist ja mein Problem...:-/
 
Dann musst du default_timezone_set() bei jedem Ausführen des Scriptes anwenden. Für Deutschland:
PHP:
default_timezone_set('Europe/Berlin');
 
Werbung:
Dann musst du default_timezone_set() bei jedem Ausführen des Scriptes anwenden. Für Deutschland:
PHP:
default_timezone_set('Europe/Berlin');

Schon klar. Habs jetzt aber endlich anders gelöst, und zwar ganz einfach mit:

PHP:
date_default_timezone_set('America/Phoenix');
echo strtotime("now");
Edit: Hmm, nein, ganz gelöst ists doch noch nicht...Bei mir lokal stimmt die Zeit jetzt zwar überein, aber wenn ich mit einem Proxy auf die datei zugreife ist die Zeit anders!

(Proxy: http://www.anonr.com/surf.php )
 
Zuletzt bearbeitet:
Da scheint wohl jemand die Funktion time() mit der Funktion date() zu verwechseln.

time() gibt den Unix-Timestamp zurück. Der ist der selbe, egal wo man sich in der Welt befinden. Sollte er zumindest sein, das hängt von der PC-Uhr ab. Am besten ist es, diese Uhr mit einer Atomuhr zu synchronisieren.

Date dagegen, gibt je nach Timezone das Datum des Unix-Timestamps.

Der mehr oder weniger aktuelle Unix-Timestamp ist 1282338966. Das ist in Deutschland etwa 23:15. Im Vereinigtem Königreich, ist 1282338966 22:15.
 
Zurück
Oben