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),所以所謂的國際化就可以這樣做,儲存使用者所在時區,然後重新定義一個日期格式化函數,比如
function localdate( $format, $time_zone ){ return date($format,time()+$time_zone*3600)}
沒有人知道嗎