Fork me on GitHub

如何设置所有用户的时区?

我以游客身份的时候,就是东8区,如果登录进去就是UTC了。

回复

  • vanillaforums.com/blog/features/auto-time-zone/

    这里有说明V采用自动时区。不知道我是什么地方设置问题。如果用游客身份访问,时间就OK。但是我一登录后看见的时间就不太对。

  • 有和我遇到一样问题的吗?

  • 网页html源代码里面有一行

    <input type="hidden" id="SetHourOffset" value="8" />
    

    你看下你那边是几

  • 我查看了一下,最后是

    <input type="hidden" id="SetHourOffset" value="8" />
    

    如果没有登录的话,没有上面这条就显示正常。

  • 奇怪。。

    8的话是应该的,表示UTC+8

    我再追查一下

  • 你再看下数据库里 xx_User 表里面 HourOffset 字段是不是8

  • 确实,User表里面的HourOffset是8。

    我发现我访问http://vanillaforums.cn/,登录以后时间显示正常。但是游客身份显示就有问题了。

    Screen Shot 2013-09-15 at 3.22.21 PM

    Screen Shot 2013-09-15 at 3.22.39 PM

    附件是我几乎在相同时间截图。登录或者没有登录。

  • 7楼的2张图片时间差正好是8个小时的时差。好奇

  • @6b79 游客的时区是可以配置的,默认是UTC,我现在在conf/config.php里面加了

    $Configuration['Garden']['GuestTimeZone'] = 'Asia/Shanghai';
    

    现在我这里登录前后的时间已经一致了

  • @chuck911 嗯,现在这里时间OK了。

  • edited 2013年09月15日 #11

    我新注册用户也是那个问题。

    服务器的时区也设置,执行date显示时间也没有问题。

    php里面的default timezone也设置了。phpinfo()也正确显示。

    我的游客时间没有问题的。

  • @chuck911 我把User表里面的HourOffset字段值设置为0的话。时间就恢复正常了,但是程序还是会自动给我修正回去。

  • @chuck911 怀疑bootstrap.php里面的

    date_default_timezone_set('UTC');
    

    没有被设置成功。

  • 呃?奇怪,按我的理解,HourOffset就应该是8呀,你要的是东八区的时间吧?

  • edited 2013年09月15日 #15

    我看了代码,基本搞明白了。还没想到解决的办法。

    之前你的游客时间有问题,是因为那时候显示的是你服务器的时间,也就是UTC+0时区。你后来设置一个游客默认时区,就被调到UTC+8了。时间就恢复正常了。至于你的用户登录以后正常,同样也是因为你服务UTC 0时区,用户字段的HourOffset=8,又被调到UTC+8了。所以,你的时间正确了。但是,缺陷就是游客的时间只能是中国时区。

    也可能在你的服务器上面运行 date_default_timezone_set('UTC'); 是把时区设置为UTC+0。而我的服务器没有。

    我反反复复检查,我服务器的时区因为其他程序缘故,是被设置为UTC+8时区的。程序的bootstrap.php里面的

    date_default_timezone_set('UTC');
    

    估计是希望被设置为UTC+0的。但是,它没有设置成功,依旧是按照UTC+8的时区。结果,代码里面很多地方都在时间戳上面用HourOffset*3600的,造成我时间就不对了。

  • 终于解决了。一处一处的排除。

    估计我的菜鸟同事暴力修改了Timezone,把Timezone的Asia/Shanghai直接替换了UTC,所以,无论我怎么设置UTC,都是UTC+8。

    重新更新时区数据,搞定!

    yum update tzdata
    

    天杀的。

  • @chuck911 看来还是需要添加

    $Configuration['Garden']['GuestTimeZone'] = 'Asia/Shanghai';
    

    否则,默认游客时区是UTC,能自动识别就好了。

  • @6b79 呵呵,我刚才也想可能是服务器时间设置的问题,过来发现你已经解决了

  • @chuck911‌ @6b79‌ 大神们 我的论坛用户登录后,时间还是不正确,怎么破呀。我设置了
    $Configuration['Garden']['GuestTimeZone'] = 'Asia/Shanghai';
    现在游客时间正常,就说登录后的不正确。

登录注册 才能回复。