日期/时间/日期时间值在您提供时存储在MySQL中.即如果您将字符串2012-04-17 12:03:23插入DATETIME列,那将是要存储的值.它将内部转换为可能或可能不准确的时间戳(见下文),但是当您再次查询该值时,您将获得相同的值;往返是透明的.
如果您尝试在SQL中进行时间计算,则可能会出现问题.即任何需要SQL来执行时区和/或服务器时间的操作.例如,使用NOW().对于任何这些操作,应正确设置时区和/或服务器时间.见Time Zone Problems.
如果这不关心你,你只需要在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');