Ich habe einen JavaScript-Zeitstempel und auch einen PHP-Zeitstempel erstellt. Es gibt ungefähr 170 Sekunden Unterschied zwischen ihnen.
time()
Math.round(new Date().getTime() / 1000)
Kann mir bitte jemand sagen, warum ich dieses Problem habe?
PHP wird auf der Serverseite ausgeführt, und in Ihrem Beispiel arbeitet JavaScript auf der Client-Seite.
Beide Seiten haben ihre eigene Zeitkonfiguration. Für den Server bleiben Zeitzoneneinstellungen usw. gleich (es sei denn, Sie ändern sie), aber der Server hat keine Ahnung, in welcher Zeitzone sich der aktuelle Besucher befindet. Es gibt keine Möglichkeit, das zu kontrollieren.
Wenn ich meine Systemuhr auf meinem Laptop ändere, beeinflusst das clientseitige JavaScript-Datum / Uhrzeit, aber der Server-Timer wird nicht beeinflusst.
PHP und JavaScript schauen beide auf die Systemzeit. Wessen System? Der, auf dem sie laufen. Der Server könnte in einem anderen Land mit anderer Zeit liegen, daher der Unterschied.
Auch die Uhr des Clients (oder seltener des Servers) könnte falsch sein.
Ein Weg, den ich oft nutze, um diesem Problem zu begegnen, ist wie folgt:
%Vor%php verwendet die Zeit auf Ihrem Server, javascript verwendet die Zeit auf dem Client (Benutzer).
Mathias hat Recht. Im Allgemeinen sollte dies nicht mit dem großen Unterschied geschehen, da moderne Computer erkennen, dass ihre Uhren im Laufe der Zeit driften und Protokolle wie NTP verwenden halte ihre Uhren synchron.
Trotzdem sollten Sie aus zwei Gründen niemals davon ausgehen, dass die Zeit auf dem Client und dem Server gleich ist:
Beim Vergleichen / Berechnen von Zeiten würde ich mich nur auf den Server verlassen. Sie haben keine Kontrolle über den Client.
Wenn Sie aus irgendeinem Grund Bedenken hinsichtlich der Konsistenz haben, empfehle ich, den Server als Ihre Zeitquelle zu verwenden und bei Bedarf Zeitzonen-Konvertierungen durchzuführen:
Dies könnte von Interesse sein: Behandlung der Zeitzonenumwandlung mit php
Tags und Links javascript php date timestamp