Home > Backend Development > PHP Tutorial > 有谁对Discuz比较了解的,每个用户有自己的时区,后台可以设置,这实现了国际化啊

有谁对Discuz比较了解的,每个用户有自己的时区,后台可以设置,这实现了国际化啊

WBOY
Release: 2016-06-06 20:18:23
Original
1310 people have browsed it

Discuz的用户首页可以看到其所在时区,后台也可以设置时区,这是国际化的路线啊

我在想它整个系统是不是用的格林威治时间,然后根据用户所在时区转换为本地时间的

比如一个论坛有中国和美国的用户同时在线发帖,系统记录发帖的时间是世界时间

我只追到系统有一个 .\source\class\discuz\discuz_application.php 类里面有一个 timezone_set()方法@date_default_timezone_set('Etc/GMT'.($timeoffset > 0 ? '-' : '+').(abs($timeoffset)));这个设置了$timeoffset其实是0啊,也就是说是设置了格林威治时间了啊……

有谁对dz源码比较熟悉的,指点我一下思路哈,谢谢了!

回复内容:

Discuz的用户首页可以看到其所在时区,后台也可以设置时区,这是国际化的路线啊

我在想它整个系统是不是用的格林威治时间,然后根据用户所在时区转换为本地时间的

比如一个论坛有中国和美国的用户同时在线发帖,系统记录发帖的时间是世界时间

我只追到系统有一个 .\source\class\discuz\discuz_application.php 类里面有一个 timezone_set()方法@date_default_timezone_set('Etc/GMT'.($timeoffset > 0 ? '-' : '+').(abs($timeoffset)));这个设置了$timeoffset其实是0啊,也就是说是设置了格林威治时间了啊……

有谁对dz源码比较熟悉的,指点我一下思路哈,谢谢了!

不管怎么设置时区,time函数得到的时间戳是固定的,不会因为时区不同而不同,只是调用date 的时候,时区就起到作用了,你可以这样理解,如果你在东八区,则date('Y-m-d') 实际上是 date('Y-m-d',time()+8*3600),所以所谓的国际化就可以这样做,存储用户所在时区,然后重新定义一个日期格式化函数,比如

<code>function localdate( $format, $time_zone ){
    return date($format,time()+$time_zone*3600)
}</code>
Copy after login

没有人知道吗

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template