主題: Server 位在國外時修正日曆顯示問題 作者: WhiteCloud 於 五月 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 小時』。 主題: Server 位在國外時修正日曆顯示問題 作者: markwu 於 五月 17, 2005, 10:39:16 下午 Hi WhiteCloud:
謝謝!不過這只是治標不治本 :-( 不是說你改的不好喔,而是這問題應該要從 pLog 對 time 的implement 做起。目前 plog 沒有 timezone, 這就是問題所在。 內部存的都是系統時間,當要顯示時才加上時差。這又會造成另一個錯誤,就是再 query 時, query 出來的結果是系統時間的結果,可是顯示時加上時差,就造成原本應該 query 到的資料卻沒有被 query 出來。 但是如果不介意,我覺的你的方法是不錯的 :-D 希望 Oscar 在 1.1 會改 :-P 應該要提醒他一下。呵呵! Mark 主題: Server 位在國外時修正日曆顯示問題 作者: bibicall 於 五月 17, 2005, 10:49:06 下午 引用自: markwu 希望 Oscar 在 1.1 會改 :-P 應該要提醒他一下。呵呵! Mark 會嗎?0.32我遇到時差問題,他就已經表示他不希望修改目前伺服器時間的部分咧 :-S 如果會改的話,這樣夏令的日光節約時間就不用改來改去了 :-D 主題: Server 位在國外時修正日曆顯示問題 作者: WhiteCloud 於 五月 17, 2005, 11:42:53 下午 Hi Mark:
首先感謝 Mark 和其他開發人員的努力,讓大家有這麼棒的軟體可以享用。:-) 其實我也希望開發團隊能夠把這個問題考慮進去,這樣使用者就不需要重新發明輪子(而且這輪子看起來蠻笨拙 :P),因為網際網路跨越國界,所以使用到跨時區的 Server 這種事情應該常有。 不過開發團隊是不是有什麼考量才沒有這樣做吧... 主題: Server 位在國外時修正日曆顯示問題 作者: markwu 於 五月 18, 2005, 12:05:30 上午 引用自: WhiteCloud Hi Mark: 其實我也希望開發團隊能夠把這個問題考慮進去,這樣使用者就不需要重新發明輪子(而且這輪子看起來蠻笨拙 :P),因為網際網路跨越國界,所以使用到跨時區的 Server 這種事情應該常有。 不過開發團隊是不是有什麼考量才沒有這樣做吧... 因為 Oscar 當初沒想到 :-( 他也沒想到 pLog 會那麼多人在用而且都不是他國家的人。呵呵。現在後悔,也來不及了。 Mark 主題: Server 位在國外時修正日曆顯示問題 作者: WhiteCloud 於 六月 09, 2005, 03:15:37 下午 (重貼回來)
----------------------------------------------------------------------------------- 我記得改好月曆顯示問題的時候,看到月曆都沒變,還以為自己改錯地方了,後來發現應該是 cache 的關係。 今天上來看自己的網誌,發現日期竟然停留在前天,這回我決定把 cache 都關掉,就恢復正常了。 進入『全域站台控管->全域設定->模板設定』設定以下兩項: template_cache_enabled 這個項目選『否』 template_http_cache_enabled 也選『否』 繼續再觀察一陣子看看。 ------------------------------------------------------------------------------------ ※ 因為關掉了 cache,Mark 之前有說明,對個人用的網誌影響較小。使用者多這樣做可能就不太合適了。 ※ 依這方法改程式和設定 cache 後,大致可以正常顯示,但我發現還剩下一個問題,剛跨日時,日曆上的前一天,沒有顯示出連結,例如我在 6/7 23:59 貼了一篇文章,過幾分鐘後跨日,接著我去看日曆,照理說 6/7 應該出現連結,但是沒有,要過了一段時間才會出現連結,這可能系統有某個部分還需要修改。 主題: Server 位在國外時修正日曆顯示問題 作者: markwu 於 六月 10, 2005, 10:07:06 上午 這個問題已經在 1.0.2 的 branch 中修正了。還剩下一些小問題,相信 1.0.2 出來時應可全部修正。
Mark 主題: Server 位在國外時修正日曆顯示問題 作者: WhiteCloud 於 六月 10, 2005, 11:52:33 上午 引用 這個問題已經在 1.0.2 的 branch 中修正了。還剩下一些小問題,相信 1.0.2 出來時應可全部修正。 Mark 非常感謝 Mark 和所有開發團隊的成員 :-) |