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

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

WBOY
Freigeben: 2016-06-06 20:18:23
Original
1310 Leute haben es durchsucht

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>
Nach dem Login kopieren

没有人知道吗

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage