当我使用下面的代码设置我的默认时区并将其插入数据库时,时间不正确。
在测试时,时间是11:56,但数据库设置为06:56, 5小时后。
<?php
date_default_timezone_set('Europe/London');
$stmt = $con->prepare("INSERT INTO test (datetime) VALUES (CURRENT_TIMESTAMP)");
$stmt->execute();
?>
答案 0 :(得分:1)
如果MySQL有关于时区设置的信息(通常有):
SET time_zone = 'Europe/London'
如果没有关于时区的信息,但是在服务器中,您可以使用服务器上的命令行在MySQL中加载表,但那是服务器管理:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p
如果无法安装时区表,您可以使用php以+hh:mm
格式获取默认时区偏移量,并在MySQL中将其用作time_zone
。当然,在调用date_default_timezone_set('<timezone_name>')
$datetime = new DateTime();
$datetime_offset = $datetime->format("P");
$query = "SET time_zone = '$datetime_offset'";
答案 1 :(得分:1)
你可以在php中获得时间
<?php
date_default_timezone_set('Europe/London');
$time_stamp = date('Y-m-d H:i:s');
$stmt = $con->prepare("INSERT INTO test (datetime) VALUES ('".$time_stamp."')");
$stmt->execute();
?>