时间戳好像本身就是按GMT时区下的时间计算的,所以一样(个人经验)

解决方案 »

  1.   

    谢谢。但是那个下边这个道题为什么是在不同的时区下,但是时间戳却不一样呢?
    EST是CST之前的一个时区(就是说任何时候EST都比CST晚一个小时)。那么以下脚本输出什么?  
    PHP代码:<?php
    $a = strtotime ('00:00:00 Feb 23 1976 EST');
    $b = strtotime ('00:00:00 Feb 23 1976 CST');
    echo $a - $b;
    ?>A.-3600
    B.3600
    C.0
    D.-1
    E.1
    答案是A
      

  2.   

    1.GMT是表示时区的一种格式
    2.EST和CST表示两个不同的时区
      

  3.   

    http://jp.php.net/manual/en/function.date.php
      

  4.   

    date这个函数我会用,但是我还是不明白第一道题的原因。
    比如:GMT时区下的时间现在是早上10:00,我们在东八区也就是早上应该为2:00,时间戳就是到unix纪元(1970年1月1日零点零分零秒)的秒数,那很明显是我们的时间戳小于GMT时区的啊。
      

  5.   

    时间戳指的應該是 time() 算出來的值。date 有 date() 和 gmdate()但是 time 沒有 gmtime() 便可知道,timestamp 是一樣的值...
      

  6.   

    时间戳表示的是自1970年1月1日0点0分0秒开始流逝的时间,所以,当然是个绝对值,无论你在哪里这个时间戳当然是一样的。至于第二题,由于你的时间字符串中设置了CST/EST,这就代表了两个不同的时区,一个是美国中部时间,一个是美国东部(大西洋)时间,这两个时间差一个小时。EST应该更大一些,所以同样的EST7点就是CST6点了。所以EST-CST是-3600,差了一个小时……
      

  7.   


    这里要问lz是否理解GMT是什么意思?http://zh.wikipedia.org/wiki/%E6%A0%BC%E6%9E%97%E5%B0%BC%E6%B2%BB%E6%A8%99%E6%BA%96%E6%99%82%E9%96%93GMT译成中文为格林尼治标准时间,也就是一种计算时区的标准,但是不代表时区。
    同样,计算时区的标准还有UTC(协调世界时)等。同一个市区内,GMT标准时间10:00是否相同?
    (严格讲这个问题有点病句嫌疑)给你date函数地址是希望你看看,里面的GMT、EST都是表示什么东西的。
      

  8.   

    可能是因为我对时间戳的理解有误。
    时间戳的计算  :是用当前的格林威治时间也就是GMT时间减去格林威治时间表示的unix纪元也就是1970年1月1日0点0分0秒 所得到的秒数。而不是用当前时区的时间减去用unix纪元得到的秒数。
    是这样的理解么?
      

  9.   

    php中的unix时间戳,也就是timestamp的值,等同于time函数的返回值。
    文档中的解释是这样的:
    time — Return current Unix timestamp
     Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT). 依此理解,无论在哪个时区,UNIX timestamp的值始终都是一样的。
      

  10.   

    也是就说时间戳和时区无关 等于time()返回值,也等同于mktime()/date('U')/gmdate('U')的返回值。
    而gmdate()和date()格式化时间则有区别,后者即根据php.ini的date.timezone的时区设置返回时区所在的时间。
    不知道这段理解是否正确。如果正确。则结贴。谢谢大家的指导。
      

  11.   

    时间戳是按秒数计算的,既然EST是CST之前的一个时区,则$a-$b就少了一个小时即3600秒,小减去大的肯定是负数