有誰對Discuz比較瞭解的,每個使用者有自己的時區,後台可以設定,這實現了國際化啊

來源:互聯網
上載者:User
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)}

沒有人知道嗎

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.