V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sunsh217
V2EX  ›  问与答

php 中 date() ,输出时间不对的问题。

  •  
  •   sunsh217 · 2016-04-05 19:42:52 +08:00 · 3240 次点击
    这是一个创建于 2935 天前的主题,其中的信息可能已经有所发展或是发生改变。

    php.ini 中的设置:

    [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = PRC

    写的测试函数:

    15 条回复    2016-04-07 07:42:58 +08:00
    sunsh217
        1
    sunsh217  
    OP
       2016-04-05 19:45:01 +08:00
    好象吞文字啊,真不好,再复述一次。

    php.ini 中的设置:

    [Date]
    date.timezone = PRC

    测试函数:
    <?php
    ini_set('date.timezone', 'Asia/Shanghai');
    echo date("Y-m-d His");
    echo "\r\n";
    echo exec('date');


    输出:
    [root@Laravel ~]# php test.php
    2016-04-06 104615
    Tue Apr 5 19:46:15 PDT 2016

    总是不对,时间上差好多,为什么?
    sunsh217
        2
    sunsh217  
    OP
       2016-04-05 19:45:26 +08:00
    求解答。
    sunsh217
        3
    sunsh217  
    OP
       2016-04-05 19:50:56 +08:00
    有人解答吗?
    msg7086
        4
    msg7086  
       2016-04-05 20:43:30 +08:00
    有你这样发帖 10 分钟不到就来催回复的吗?
    而且你这时间不是完全正确吗?中国时间的 10:46 难道不是太平洋时间的 19:46 ?
    liuhaotian
        5
    liuhaotian  
       2016-04-05 20:54:30 +08:00 via iPhone
    @msg7086 2333 而且有人来解答了十分钟内不感谢🙈
    你这个情况是系统的时间没有设置好时区吧?
    liuhaotian
        6
    liuhaotian  
       2016-04-05 20:54:30 +08:00 via iPhone
    @msg7086 2333 而且有人来解答了十分钟内不感谢🙈
    你这个情况是系统的时间没有设置好时区吧?
    skydiver
        7
    skydiver  
       2016-04-05 20:55:48 +08:00
    难道时区不应该写 Asia/Shanghai 么
    yangqi
        8
    yangqi  
       2016-04-05 21:17:41 +08:00
    你系统时区是 PDT 你知道么?
    sunsh217
        9
    sunsh217  
    OP
       2016-04-05 21:44:33 +08:00   ❤️ 1
    @yangqi 解决了,你是对的, PDT 时区是个错误的选择,纠正就对了。
    @msg7086 不懂不要装懂。
    @skydiver 两种写法都可以。

    正确的解决办法。 PDT 是 Pacific Daylight Time , 太平洋夏令时间,这个时区是不对的,
    解决方案是:
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime, 覆盖之,即可转成本地时间。这个本地时间( Asia/Shanghai),被称为
    中国标准时间 CST ( China Standard Time )
    转换关系 : GMT + 8 = UTC + 8 = CST
    其它两个时间解释如下:
    GMT(Greenwich Mean Time ,格林威治标准时间): 是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
    UTC(Universal Time/Temps Cordonné 世界标准时间)

    之后,用 date -s " your specified time" 即可。

    现在命令的输出正确了:
    [root@Laravel Asia]# date -R
    Tue, 05 Apr 2016 21:44:19 +0800 //+0800, 即是东八区,也就是 GMT 时间+8 小时
    [root@Laravel Asia]# date
    Tue Apr 5 21:44:30 CST 2016 // CST 时间,即是中国标准时间。

    Resolved!
    cszchen
        10
    cszchen  
       2016-04-05 21:50:19 +08:00   ❤️ 1
    还敢说别人不懂,真是醉了
    b821025551b
        11
    b821025551b  
       2016-04-05 21:58:54 +08:00
    说别人不懂。。。别给 PHPer 丢脸了,看的我都脸红了。。。
    sunsh217
        12
    sunsh217  
    OP
       2016-04-05 22:24:03 +08:00
    @b821025551b 你脸继续红吧,没人搭理你。最好你屁股也红掉。
    msg7086
        13
    msg7086  
       2016-04-06 05:11:40 +08:00   ❤️ 1
    这里不欢迎没有知识也没有礼貌的人。
    我在美国西部生活了很多时间,我知道 PDT 是美国西部,而且上面很多人都一眼就看出来了。
    如果你看不起别人,可以不要来问。如果你不懂,那就谦虚点。
    sunsh217
        14
    sunsh217  
    OP
       2016-04-06 07:43:47 +08:00 via Android
    @msg7086 说实话 我到目前为止 依旧不认为你读懂了我在问什么 我认为你懂 pdt 但读不懂题意 更不明白我在问什么 建议你重读题目 搞清楚我在问什么 再看看你答了什么 自然就明白为何我认为你没有理解我在说什么 另外 最先没礼貌的人好像是你自己
    julyclyde
        15
    julyclyde  
       2016-04-06 15:08:57 +08:00
    @sunsh217 你自己都没描述清楚,然后自己找到问题所在了,就开始指责别人
    nikoukou
        16
    nikoukou  
       2016-04-07 07:42:58 +08:00
    已 block 楼主
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1254 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:46 · PVG 01:46 · LAX 10:46 · JFK 13:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.