PHP - 为什么当前日期与数据库中的日期不一样?

时间:2014-10-21 04:47:18

标签: php mysql

我刚刚遇到有关datetime问题的问题。我只是将数据插入数据库并与当前日期时间进行比较,这似乎是一个问题。

sql查询

$result = mysql_query("INSERT INTO table_name(lastWarnDate) VALUES(NOW())");

我的PHP代码

//$result["lastWarnDate"] = "2014-10-20 22:00:49"

$datetime1 = strtotime(date("Y-m-d H:i:s"));
$datetime2 = strtotime($result["lastWarnDate"]);
$interval  = abs($datetime2 - $datetime1);
$minutes   = round($interval / 60);

//$datetime1 = 2014-10-21 02:11:44
//$datetime2 = 2014-10-20 22:00:49

我的时区是Asia/Kuala_Lumpur。我的服务器位于新加坡。我正在使用Digital Ocean服务器。

顺便说一下,插入数据后输出直接显示。请指教。谢谢。

4 个答案:

答案 0 :(得分:0)

在PHP中

  

定义(' TIMEZONE',' Asia / Kuala_Lumpur');

在Mysql(或其他PDO兼容数据库)中

  

$ db = new PDO(' mysql:host = localhost; dbname = test',' dbuser',   ' DBPASSWORD&#39);

     

$ db-> exec(" SET time_zone =' Asia / Kuala_Lumpur&#39 ;;");

SitePoint synchronize php mysql timezone configuration提供了一个基于PHP中设置的时区自动配置数据库时区的优雅解决方案

答案 1 :(得分:0)

转到MySQL Website

并下载“ POSIX标准时区描述表,版本2011n ”并根据站点说明在您的数据库中更新它。你会完成它。

答案 2 :(得分:0)

这是因为您的系统时区与服务器不匹配。打开mysql控制台并输入你的时区,如下所示:SET GLOBAL time_zone = "+06:00";考虑差距。然后重启mysql。

答案 3 :(得分:0)

我已经找到了答案。最正确的答案是使用UTC_TIMESTAMP()代替NOW()。谢谢大家的帮助!!