3

我正在尝试同步我的 PHP 和 MySQL 时间。目前时间不同(以下输出):

'SELECT CURRENT_TIMESTAMP' returns '2013-03-16 13:14:28'
'date('Y-m-d g:i:s')'      returns '2013-03-16 10:14:28'

从其他用户那里阅读,我已经成功地使用SET time_zone='-7:00';. 问题是时间会根据用户的位置改变不同的查询,我宁愿不改变time_zone每个查询的时间。

我应该只设置time_zone一次,使其与服务器时间相同,然后根据用户在 PHP 中的时区更改时间吗?还是有更好的方法来解决这个问题?

先感谢您!

4

2 回答 2

2

我是否应该只设置一次 time_zone,使其与服务器时间相同,然后根据用户在 PHP 中的时区更改时间?还是有更好的方法来解决这个问题?

是的。由于夏令时,您也不应该通过其 GMT 区域设置时区。您可以通过设置 date_default_timezone_set('UTC'); 编写自己的函数来执行此转换;然后到您用户的时区。

$time = strtotime('2013-03-16 13:14:28'.' UTC');
echo date('Y-m-d g:i:s',$time); //2013-03-16 9:14:28

另一种选择是将mysql时间存储在“Unix Time”中,然后只用PHP转换一次。

于 2013-03-16T18:45:22.540 回答
1

您肯定想在应用程序/数据库中使用单个时区。如果您在向用户显示时必须喜欢,仅更改数据的时区(不在数据库或您的 php 默认 tz 中) - 然后仅在您即将显示它之前执行此操作。否则,请使用单个时区。我更喜欢格林威治标准时间

设置 mysql 服务器时区:在 my.conf 中有这样的东西: default-time-zone='GMT' 然后重新启动 mysql 参见:http ://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

对于 php,您应该在每个页面顶部的某处执行此行:

date_default_timezone_set("GMT");
于 2013-03-16T17:45:06.273 回答