歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 23, 2024, 01:55:33 下午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  開發  |  核心補強  |  Server 位在國外時修正日曆顯示問題 « 上篇主題 下篇主題 »
頁: [1]
作者 主題: Server 位在國外時修正日曆顯示問題  (閱讀 18162 次)
WhiteCloud
初級會員
**
文章: 51


檢視個人資料 個人網站
« 於: 五月 17, 2005, 03:55:39 下午 »

pLog 一直讓我覺得很不錯,除了一點,日曆顯示不正確 :-(

我用 Google 找了半天,沒找到中文資料解決這個問題,只好自己 DIY 了。

看起來日曆是抓預設的系統日期,由於我用的 Server 所在的時區比台灣慢 16 小時,因此找到抓系統日期的地方就好辦了,於是開始追蹤程式,一路追追追....

找到了兩個相關程式:

一個負責前端的日曆顯示 -- /class/data/htmlcalendar.class.php
改三個地方(註解掉的是原來程式):
1.
    function getCurrentMonthView()
    {
// 2005.05.17 update because local time area
//        $d = getdate(time());
        $d = getdate(time()+57600);
        return $this->getMonthView($d["mon"], $d["year"]);
    }
2.
    function getCurrentYearView()
    {
// 2005.05.17 update because local time area
//       $d = getdate(time());
        $d = getdate(time()+57600);
        return $this->getYearView($d["year"]);
    }
3.
        // Make sure we know when today is, so that we can use a different CSS style
// 2005.05.17 update because local time area
//        $today = getdate(time());
        $today = getdate(time()+57600);

一個負責後端貼新文章的預設日期時間 --
/class/data/Date.class.php

    function Date($date = null)
    {
        $this->tz = Date_TimeZone::getDefault();
        if (is_null($date)) {
// 2005.05.17  update because local time area

//            $this->setDate(date("Y-m-d H:i:s"));
            $this->setDate(date("Y-m-d H:i:s",time()+57600));
        } elseif (is_a($date, 'Date')) {
            $this->copy($date);
        } else {
            $this->setDate($date);
        }
    }

傳至 Server 上面後,yahoo :-)

這是簡單的暫時解決方案,應該重新改寫各個類別才是王道吧 :P

對了,『網誌伺服器與您所在地的時間差』這項設定要設定為『0 小時』。
已記錄
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #1 於: 五月 17, 2005, 10:39:16 下午 »

Hi WhiteCloud:

謝謝!不過這只是治標不治本  傷心

不是說你改的不好喔,而是這問題應該要從 pLog 對 time 的implement 做起。目前 plog 沒有 timezone, 這就是問題所在。

內部存的都是系統時間,當要顯示時才加上時差。這又會造成另一個錯誤,就是再 query 時, query 出來的結果是系統時間的結果,可是顯示時加上時差,就造成原本應該 query 到的資料卻沒有被 query 出來。

但是如果不介意,我覺的你的方法是不錯的  開懷大笑

希望 Oscar 在 1.1 會改  吐舌頭  應該要提醒他一下。呵呵!

Mark
已記錄

bibicall
LifeType 中文發展團隊
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 回覆文章 #2 於: 五月 17, 2005, 10:49:06 下午 »

引用自: markwu
希望 Oscar 在 1.1 會改  吐舌頭  應該要提醒他一下。呵呵!
Mark


會嗎?0.32我遇到時差問題,他就已經表示他不希望修改目前伺服器時間的部分咧 疑惑
如果會改的話,這樣夏令的日光節約時間就不用改來改去了 開懷大笑
已記錄

我的虛擬主機基本資料如下
Operating system: Linux
Apache version: 1.3.37
PHP version: 4.4.4
MySQL version: 4.1.21-standard
WhiteCloud
初級會員
**
文章: 51


檢視個人資料 個人網站
« 回覆文章 #3 於: 五月 17, 2005, 11:42:53 下午 »

Hi Mark:


首先感謝 Mark 和其他開發人員的努力,讓大家有這麼棒的軟體可以享用。:-)

其實我也希望開發團隊能夠把這個問題考慮進去,這樣使用者就不需要重新發明輪子(而且這輪子看起來蠻笨拙 :P),因為網際網路跨越國界,所以使用到跨時區的 Server 這種事情應該常有。

不過開發團隊是不是有什麼考量才沒有這樣做吧...
已記錄
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #4 於: 五月 18, 2005, 12:05:30 上午 »

引用自: WhiteCloud
Hi Mark:
其實我也希望開發團隊能夠把這個問題考慮進去,這樣使用者就不需要重新發明輪子(而且這輪子看起來蠻笨拙 :P),因為網際網路跨越國界,所以使用到跨時區的 Server 這種事情應該常有。

不過開發團隊是不是有什麼考量才沒有這樣做吧...


因為 Oscar 當初沒想到  傷心

他也沒想到  pLog 會那麼多人在用而且都不是他國家的人。呵呵。現在後悔,也來不及了。

Mark
已記錄

WhiteCloud
初級會員
**
文章: 51


檢視個人資料 個人網站
« 回覆文章 #5 於: 六月 09, 2005, 03:15:37 下午 »

(重貼回來)
-----------------------------------------------------------------------------------
我記得改好月曆顯示問題的時候,看到月曆都沒變,還以為自己改錯地方了,後來發現應該是 cache 的關係。

今天上來看自己的網誌,發現日期竟然停留在前天,這回我決定把 cache 都關掉,就恢復正常了。

進入『全域站台控管->全域設定->模板設定』設定以下兩項:

template_cache_enabled 這個項目選『否』

template_http_cache_enabled 也選『否』

繼續再觀察一陣子看看。
------------------------------------------------------------------------------------

※ 因為關掉了 cache,Mark 之前有說明,對個人用的網誌影響較小。使用者多這樣做可能就不太合適了。
※ 依這方法改程式和設定 cache 後,大致可以正常顯示,但我發現還剩下一個問題,剛跨日時,日曆上的前一天,沒有顯示出連結,例如我在 6/7 23:59 貼了一篇文章,過幾分鐘後跨日,接著我去看日曆,照理說 6/7 應該出現連結,但是沒有,要過了一段時間才會出現連結,這可能系統有某個部分還需要修改。
已記錄
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #6 於: 六月 10, 2005, 10:07:06 上午 »

這個問題已經在 1.0.2 的 branch 中修正了。還剩下一些小問題,相信 1.0.2 出來時應可全部修正。

Mark
已記錄

WhiteCloud
初級會員
**
文章: 51


檢視個人資料 個人網站
« 回覆文章 #7 於: 六月 10, 2005, 11:52:33 上午 »

引用
這個問題已經在 1.0.2 的 branch 中修正了。還剩下一些小問題,相信 1.0.2 出來時應可全部修正。

Mark


非常感謝 Mark 和所有開發團隊的成員 微笑
已記錄
頁: [1]
LifeType 中文開發論壇  |  開發  |  核心補強  |  Server 位在國外時修正日曆顯示問題 « 上篇主題 下篇主題 »
    前往: