PHP date()函数没有给出正确的时间

时间:2011-01-01 10:19:14

标签: php date

我想弄清楚为什么php date()给我错误的时间,将实际时间设置为2小时。

<?php echo date("Y-m-d H:i:s"); ?>

这给出2011-01-01 03:14:04而不是2011-01-01 05:14:04。小时减少2。 我没有更改date()的时区,当用户访问该网站时,我希望时间也适合他们的时区。我怎样才能使用php工作?

4 个答案:

答案 0 :(得分:2)

您必须使用date_default_timezone_set()datetime对象,并且用户必须在某个选项菜单中设置自己的时区。

否则,PHP是一种服务器端语言,不知道它在用户端的时间。

您必须使用客户端语言JavaScript。您可以让它只是静态并显示当前用户系统时间,或者如果由于某种原因您需要花时间进入PHP,您可以使用一些类似AJAX的脚本来让JavaScript在页面加载时将时间发送到脚本中

答案 1 :(得分:2)

这是因为默认情况下,它显示您可以使用以下代码更改您所在地区的GMT时间

   date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list
    echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time

支持的时区列表 http://www.php.net/manual/en/timezones.php

答案 2 :(得分:1)

尝试设置时区:date_default_timezone_set或通过ini

更新:您无法为用户设置正确的日期。 Javascript可以处理它,但你必须依靠用户的系统来确定他/她的时间。

答案 3 :(得分:0)

//更改日期格式

$dateInfo = date_parse_from_format('m-d-Y', $data['post_date']);
$unixTimestamp = mktime(
        $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'],
        $dateInfo['month'], $dateInfo['day'], $dateInfo['year']
    );
$data['post_date']=date('Y-m-d',$unixTimestamp);