Warum gibt es einen Unterschied zwischen JavaScript und PHP Timestamp

8

Ich habe einen JavaScript-Zeitstempel und auch einen PHP-Zeitstempel erstellt. Es gibt ungefähr 170 Sekunden Unterschied zwischen ihnen.

  • 1302162686 PHP - time()
  • 1302162517 JavaScript - Math.round(new Date().getTime() / 1000)

Kann mir bitte jemand sagen, warum ich dieses Problem habe?

    
Omer Abbas 07.04.2011, 07:56
quelle

6 Antworten

14

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.

    
Mathias Bynens 07.04.2011, 07:57
quelle
2

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%     
Salman A 07.04.2011 08:04
quelle
1

PHP betrachtet die Systemzeit, auf der der Server läuft.

JavaScript betrachtet das System des Clients, was jederzeit möglich ist.

    
alex 07.04.2011 07:58
quelle
1

php verwendet die Zeit auf Ihrem Server, javascript verwendet die Zeit auf dem Client (Benutzer).

    
herostwist 07.04.2011 07:59
quelle
1

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:

  • Einige Clients / Server haben keine Uhreinstellungen (wie NTP) und ihre Uhren driften mit der Zeit weg
  • Noch wichtiger ist, dass viele Benutzer / Administratoren ahnungslos oder spät ihre Zeitzone einstellen oder die Sommerzeit anpassen können, so dass die Ihnen zur Verfügung gestellte Zeit sekundengenau ist, aber einige Stunden frei ist.

Beim Vergleichen / Berechnen von Zeiten würde ich mich nur auf den Server verlassen. Sie haben keine Kontrolle über den Client.

    
MaxVT 07.04.2011 08:01
quelle
0

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

    
Tyler Pham 07.04.2011 08:06
quelle

Tags und Links