本帖最后由 hongming271 于 2013-03-05 16:20:16 编辑

解决方案 »

  1.   

    date_default_timezone_set("PRC");
    加上这句试试看看
      

  2.   

    8小时是因为中国在+8区。
    最好在php.ini里修改timezone时间戳是从1970年1月1日开始的秒数,跟时区无关。
      

  3.   


    手册: http://www.php.net/manual/en/datetime.construct.php// Using a UNIX timestamp.  Notice the result is in the UTC time zone.
    $date = new DateTime('@946684800');
    echo $date->format('Y-m-d H:i:sP') . "\n";
      

  4.   

    <?php date_default_timezone_set("Europe/London");
    $dt = new DateTime('@1356969600');
    echo $dt->getTimezone()->getName(),"\n";
    echo $dt->format('Y-m-d H:i:s'), "\n";
    echo date('Y-m-d H:i:s',1356969600),"\n";
    date_default_timezone_set("Asia/Shanghai");
    $dt = new DateTime('@1356969600');
    echo $dt->getTimezone()->getName(),"\n";
    echo $dt->format('Y-m-d H:i:s'), "\n";
    echo date('Y-m-d H:i:s',1356969600),"\n\n";
    date_default_timezone_set("Asia/Shanghai");
    $dt = new DateTime('@1356969600');
    echo $dt->getTimezone()->getName(),"\n";
    echo $dt->format('Y-m-d H:i:s'), "\n";
    echo date('Y-m-d H:i:s',1356969600),"\n";
    $dt->setTimezone(new DateTimeZone('Asia/Shanghai'));
    echo $dt->getTimezone()->getName(),"\n";
    echo $dt->format('Y-m-d H:i:s'), "\n";
    echo date('Y-m-d H:i:s',1356969600),"\n";
      

  5.   


    echo $dt->format('Y-m-d H:i:s'), "\n";  // 2012-12-31 16:00:00
    date('Y-m-d H:i:s',1356969600),"\n";  // 2013-01-01 00:00:00 
    时区的设置,我在配置文件中配置好了,配置的是PRC
      

  6.   

    本帖最后由 xuzuning 于 2013-03-06 09:41:27 编辑
      

  7.   

    你$dt = new DateTime('@1356969600');中的@1356969600时间轴生成的时候用的是哪个时间设置,转换的时候要统一,否则就会出现你那样的问题如,生成的时候用:date_default_timezone_set("PRC");转换页面也必须用:date_default_timezone_set("PRC");