我遇到了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
谁能告诉我如何解决它
感谢
我遇到了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
谁能告诉我如何解决它
感谢
@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/
希望这有助于。祝你好运。
你必须设置一个有效的时区 - 看来你没有在PHP环境为您的位置进行适当的时区。
退房
http://www.php.net/manual/en/function.date-default-timezone-set.php
它应该给你一个线索如何建立在PHP正确的时区。
@ Mujahid这可能是问题所在。您应该在将日期值存储在MySql数据库之前尝试回显日期值,如果它们匹配,那肯定是时区问题。 –
@Saad Imran:当我打印时间它只是给我同样的答案:( – Mujahid
使MySQL服务器和Web服务器的时区设置相同。
你知道哪里的时间不存储在varchar字段? –
你怎么知道时间没有存储在BLOB中? –
对不起,我不想和你争吵,我想澄清一下与mysql的关系,我首先想到的是OP将PHP的时间字符串添加到数据库中,但是只是发现了标签“datetime “所以你的回答可能是正确的, –
这将增加托管服务器的时间不是本地时间 $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']));
当我运行这段代码,我得到:2011-08-03 08 :24:27 –
当我运行它时我得到2011-08-03 04:33:02。有趣的是,时间不断变化,在不同的时区不一样。 –
你是否在我的后面运行它? –