时间:2021-07-01 10:21:17 帮助过:5人阅读
我在想它整个系统是不是用的格林威治时间,然后根据用户所在时区转换为本地时间的
比如一个论坛有中国和美国的用户同时在线发帖,系统记录发帖的时间是世界时间
我只追到系统有一个 .\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),所以所谓的国际化就可以这样做,存储用户所在时区,然后重新定义一个日期格式化函数,比如
function localdate( $format, $time_zone ){
return date($format,time()+$time_zone*3600)
}
没有人知道吗