日期/时间/日期时间值在您提供时存储在 MySQL 中。即,如果您INSERT
将字符串2012-04-17 12:03:23
放入一DATETIME
列,这就是将要存储的值。它将在内部转换为可能准确也可能不准确的时间戳(见下文),但是当您再次查询该值时,您将得到相同的值;往返是透明的。
如果您尝试在 SQL 中进行时间计算,可能会出现问题。即任何需要SQL 来考虑时区和/或服务器时间的操作。例如,使用NOW()
. 对于任何这些操作,应正确设置时区和/或服务器时间。请参阅时区问题。
如果这与您无关并且您只需要在 PHP 中进行计算,您只需要确保您知道要从哪个时区转换到哪个时区。为此目的,将所有时间标准化为 UTC会很方便,但这不是必需的,因为从任何时区到任何其他时区的时区转换也一样有效,只要您清楚要从哪个时区转换并。
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');