也就是说date函数是跟系统的时区有关系的

解决方案 »

  1.   

    换一个函数名吧,php已经有了function getDateTime($unixtime,$zoneNum=8){
    $t=$unixtime-date("Z")+$zoneNum*3600;
    if($t>0)return date("Y-m-d H:i:s",$t);
    else return -1;
    }
    echo getDateTime(time(),0);//GMT时间
    echo "<BR>";
    echo getDateTime(time());//北京时间
      

  2.   

    <?php
    function myDate($unixtime,$zoneNum=8) {
      $h = date("H",0);
      return date("Y-m-d H:i:s",$unixtime+($zoneNum-$h)*3600);
    }
    echo myDate(time()); // 2003-06-13 12:07:54
    echo myDate(time(),0); // 2003-06-13 04:07:54
    ?>
      

  3.   

    xuzuning(唠叨)的好像不对吧如果有的时区为负值呢,而date("H",0)返回的值始终是正值
      

  4.   

    vivanboy(从不睡懒觉的鸟儿)的函数可以还有没有其他方法,各位继续
      

  5.   

    date("H",0) 返回的是服务器端的时差
    要从给定的时区中扣除的$zoneNum-$h
      

  6.   

    我在手册上看的阿,明明是:
    H - hour, 24-hour format; i.e. "00" to "23" 
    就是00-23,根本没有负值,也不是什么服务器端的时差。你这里指的时差是什么?比方说1970-1-1 00:00:00的时候-1区的date("H",0)是23,你这里8-23就不正确了
      

  7.   

    比方说在GMT时间1970-01-01 00:00:00的时候-1区的date("H",0)是23,你这里8-23就不正确了,8-23相差15个小时,而实际上只是相差8-(-1)=9个小时
      

  8.   

    用vivanboy(从不睡懒觉的鸟儿)的date("Z")比较准确不过,还有没有其它比较经典的算法阿?一步一步来求,尽量不要根据php的时间函数来计算!搞定了我开帖给分这个帖应该算是比较经典的吧
      

  9.   

    <?php
    function myDate($unixtime,$zoneNum=8) {
      return date("Y-m-d H:i:s",($unixtime/3600+$zoneNum)*3600);
    }
      

  10.   

    <?php
    function myDate($unixtime,$zoneNum=8) {
      return gmdate("Y-m-d H:i:s",($unixtime+$zoneNum*3600);
    }
      

  11.   

    Owen_Young() 的还是跟系统的时区有关系,所以不正确
      

  12.   

    不好意思
    owen_young()第二个函数正确,不错。哈哈,又学到一个函数gmdate,谢谢给分