2016-04-09 8 views
0

Zuerst möchte ich Datum zu Integer von PHP konvertieren.PHP Datum in der Vergangenheit nicht passen passen

echo strtotime('08-04-2016 10:33:45 GMT+7'); 

und das ist Ergebnis: . Aber wenn ich noch einmal überprüfen mit Code:

$timezone = +7; 
echo gmdate("H:i:s | d-m-Y ",1460086425 + 3600*($timezone+date("I"))); 

und das ist Ergebnis: 11:33:45 | 08-04-2016

Warum unterscheidet sich von 11:33:45 | 08-04-2016 und 08-04-2016 10:33:45, über eine Stunde.

+0

Wechsel zu echo gmdate ("h: i: s | d-m-Y", 1460086425 + 3600 * ($ Zeitzone + Datum ("I"))); –

+0

$ felipsmartins, danke deine Hilfe, aber es immer noch "11:33:45 | 08-04-2016". Abweichung ist eine Stunde. –

Antwort

0

Ich frage mich, ob Ihre Zeitzone Einstellungen nicht korrekt sind. Ich hatte in letzter Zeit ein ähnliches Problem und es wurde dadurch verursacht, dass die Sommerzeit nicht korrekt angewendet wurde. Ich stelle mir vor, wenn der Server nicht weiß, wo er ist, kann er nicht wissen, wann die Sommerzeit beginnt und endet.

Um herauszufinden, ob dies für Sie gilt, versuchen Siein einem Skript - was bekommen Sie? Stellen Sie sicher, dass Sie dies entweder in einem Webkontext tun, wenn Ihr Problem in einem Webskript auftritt, oder in der Konsole, wenn Ihr Problem in der Konsole auftritt. Dies liegt daran, dass die PHP-Einstellungen, um dies zu steuern, oft separat festgelegt werden.

Wenn Sie feststellen, dass Ihre Einstellung nicht die korrekte Stadt angibt, die Sie normalerweise für Ihre TZ angeben würden, ändern Sie sie in Ihrer php.ini Datei. Zum Beispiel für mich, ich benutze diese:

date.timezone = Europe/London 
0

Soweit ich weiß (während timezones Überprüfung) die Bereiche auf GMT + 7 do DST nicht beobachten. Außerdem verwendet date die in date.timezone festgelegte Zeitzone, die für Ihren Standort korrekt sein kann, aber für einen anderen Standort wahrscheinlich falsch ist.

Es ist besser, DateTime zu verwenden und das korrekte DateTimeZone anzugeben. Auf diese Weise werden die Chancen, den Zeitzonen-Offset (und ob DST aktiv ist) falsch zu bekommen, signifikant reduziert.