Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP &MySQL:Konvertieren von gespeichertem TIMESTAMP in die lokale Zeitzone des Benutzers

Date/time/datetime-Werte werden in MySQL gespeichert, sobald Sie sie angeben. Dh wenn Sie INSERT die Zeichenfolge 2012-04-17 12:03:23 in ein DATETIME Spalte, das ist der Wert, der gespeichert wird. Er wird intern in einen Zeitstempel umgewandelt, der genau sein kann oder auch nicht (siehe unten), aber wenn Sie den Wert erneut abfragen, erhalten Sie denselben Wert zurück; der Hin- und Rückweg ist transparent.

Es können Probleme auftreten, wenn Sie versuchen, Zeitberechnungen in SQL durchzuführen. Dh jede Operation, die erfordert, dass SQL die Zeitzone und/oder die Serverzeit berücksichtigt. Verwenden Sie zum Beispiel NOW() . Für alle diese Vorgänge sollten die Zeitzone und/oder die Serverzeit richtig eingestellt werden. Siehe Zeitzonenprobleme .

Wenn Sie das nicht betrifft und Sie nur Berechnungen in PHP durchführen müssen, müssen Sie nur sicherstellen, dass Sie wissen, von welcher Zeitzone in welche Zeitzone Sie konvertieren möchten. Zu diesem Zweck kann Es kann bequem sein, alle Zeiten auf UTC zu standardisieren, aber es ist nicht notwendig, da Zeitzonenkonvertierungen von jeder Zeitzone in jede andere Zeitzone genauso gut funktionieren, solange Sie sich darüber im Klaren sind, aus welcher Zeitzone und in welche Zeitzone Sie konvertieren.

date_default_timezone_set('Asia/Tokyo'); // your reference timezone here

$date = date('Y-m-d H:i:s');

/* INSERT $date INTO database */;

$date = /* SELECT date FROM database */;

$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');