我目前在一些共享主机上,当我在php-sql查询中使用NOW()
或CURRENT_TIMESTAMP
时,插入的数据会延迟7小时。
我可以用PHP做些什么来纠正这个问题吗?
我试过
date_default_timezone_set('Europe/Dublin');
但这似乎没有什么不同。
输出:
php time: 1347544854
date: 2012-09-13 14:0054 UTC
mysql array(3) {
["zone"]=> string(6) "SYSTEM"
["utcts"]=> string(19) "2012-09-13 14:00:54"
["now"]=> string(19) "2012-09-13 07:00:54"
}
这是MySQL时区参考,向您展示如何设置它。
对于懒惰的人:
mysql> SET time_zone = timezone;
使用mysql函数时,将使用mysql中设置的时区。您可以在查询中使用以下选项更改时区:
SET time_zone = 'Europe/Dublin'
-不是答案,但对于注释来说太长了-
请尝试(使用mysql连接的正确凭据)
<?php
echo "php'n";
echo 'time: ', time(), "'n";
echo 'date: ', date('Y-m-d H:is T', time()), "'n";
echo "mysql'n";
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
foreach( $pdo->query('SELECT @@time_zone as zone, UTC_TIMESTAMP() as utcts, Now() as now', PDO::FETCH_ASSOC) as $row ) {
foreach( $row as $k=>$v) {
echo $k, '=', $v, "'n";
}
}
输出应该类似
php
time: 1347543592
date: 2012-09-13 15:3952 CEST
mysql
zone=SYSTEM
utcts=2012-09-13 13:39:53
now=2012-09-13 15:39:53
请将您机器上的输出添加到您原来的问题中。。。