php mysql date.timezone以及冬季和夏季时间

时间:2012-07-04 05:28:10

标签: php mysql date timezone

我有问题要正常工作 夏季GMT +02:00 和 冬季GMT +01:00  在php或mysql中的时间

在php.ini date.timezone ='Europe / Prague'

通过这种方式,php和mysql的工作原理相同 - >

所以strtotime('20120101000000') returns 1325372400 因为strtotime使用当地时间,而strtotime('20120101000000 UTC')返回正确的值1325376000

但对我来说没有什么是正确的,例如: 当用户在2012年7月1日00:30获得金钱时我将它存储在没有UTC的strtotime ....但是当我在冬天读到它时,我会看到23:30 30.6.2012 ....因为我的GMT +小时被改变了

因此我尝试将当地时间设置为UTC并仅使用UTC ...但这意味着,我必须更改系统时间并添加到小时(GMT +02:00)现在工作正常

但必须停止NTP同步......因为我需要使用时间增加GMT +02:00

你能帮我吗,如果存在另一个brilant解决方案或如何设置NTP同步增加2小时

接下来的问题是,网络服务器说你的时间(增加2小时是GMT ......但事实并非如此)

1 个答案:

答案 0 :(得分:2)

在PHP中,您可以使用该函数在脚本中设置时区 date_default_timezone_set http://php.net/manual/en/function.date-default-timezone-set.php

在mysql中,时区默认为计算机/服务器的系统时间。您可以通过以下方式了解如何更改此内容:

http://dev.mysql.com/doc/refman//5.5/en/time-zone-support.html

或者使用mysql,您可以使用hte以下命令在每个查询的基础上执行此操作:

CONVERT_TZ()
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

最好通过将所有数据转换为单个TZ来处理时区,最好是不受夏令时影响的TZ。 GMT或UTC是最佳做法。您可以在需要时将查询结果转换为所需的TZ。或者,您可以使用linux时间戳(php:time(),strtotime(),Mysql:UNIX_TIMESTAMP),然后在需要时将这些值转换为人类可读的字符串。

希望这有帮助。