2011-08-03 150 views
0

我遇到了php date()函数的问题。PHP日期时间错误

当我在mysql数据库中保存日期时,小时显示比我当前时间少4小时。

我的PHP代码如下:$add_date = date("Y-m-d H:i:s");

它保存为

2011-08-03 7时51分26秒

数据库的时间,但在应该显示

2011-08-03 13:22:26

谁能告诉我如何解决它

感谢

+0

当我运行这段代码,我得到:2011-08-03 08 :24:27 –

+1

当我运行它时我得到2011-08-03 04:33:02。有趣的是,时间不断变化,在不同的时区不一样。 –

+0

你是否在我的后面运行它? –

回答

2

@Mujahid如果打印时间和保存的时间相同,这可能意味着您的服务器与您的时区不在同一时区。这就是说,你必须在文件顶部手动设置PHP脚本的默认时区,或者通过显式定义你的时区来获取DateTime。下面的代码:

$dateTime = new DateTime("now", new DateTimeZone('America/Los_Angeles')); 
$add_date = $dateTime->format("Y-m-d H:i:s"); 
echo $add_date; 

这里的时区的列表,PHP支持,只要找到你的,用它代替美洲/洛杉矶

http://php.net/manual/en/timezones.php

这里有一个关于PHP DateTime和DateTimeZone一个很好的教程...

http://ditio.net/2008/06/03/php-datetime-and-datetimezone-tutorial/

希望这有助于。祝你好运。

+0

Imran:谢谢你的回答,它的工作完美:) – Mujahid

+0

Imran:非常感谢你的回答。它的工作完美。 – Mujahid

+0

没问题:) –

3

你必须设置一个有效的时区 - 看来你没有在PHP环境为您的位置进行适当的时区。

退房

http://www.php.net/manual/en/function.date-default-timezone-set.php

它应该给你一个线索如何建立在PHP正确的时区。

+0

@ Mujahid这可能是问题所在。您应该在将日期值存储在MySql数据库之前尝试回显日期值,如果它们匹配,那肯定是时区问题。 –

+0

@Saad Imran:当我打印时间它只是给我同样的答案:( – Mujahid

0

使MySQL服务器和Web服务器的时区设置相同。

+0

你知道哪里的时间不存储在varchar字段? –

+0

你怎么知道时间没有存储在BLOB中? –

+1

对不起,我不想和你争吵,我想澄清一下与mysql的关系,我首先想到的是OP将PHP的时间字符串添加到数据库中,但是只是发现了标签“datetime “所以你的回答可能是正确的, –

0

这将增加托管服务器的时间不是本地时间 $add_date = date("Y-m-d H:i:s");

使用的strtotime()添加小时和分钟

$newdate = date("Y-m-d H:i:s",strtotime('+ 5 hours 30 minutes'.$row['db_date']));