主題:
[DB]
[求助] 請教資料庫的時間紀錄觀念
[打印本頁]
發表人:
bbx1
時間:
2010-5-6 12:19 PM
主題:
[求助] 請教資料庫的時間紀錄觀念
上次感謝各位的幫忙, 受益良多
小弟也開始嘗試往 PHP/DB 跨出第一步了
以後還請多多....不, 這次就需要麻煩各位多多指教了XD
--------------
這次是想請教各位高手只是個觀念問題
資料庫常常會紀錄到時間
假如今天要做一個網站, 使用者來自各地
當使用者瀏覽網站時, 資料被建立的時間要被轉換為該使用者當地的時間
在這樣的設計前提下, 我該在資料紀錄UTC時間好呢? 還是以Server的Timezone為主即可?
似乎各有利弊?
請大大們就自己的經驗指教一下,
感激不盡!
發表人:
陽だまり
時間:
2010-5-10 01:47 AM
用gmt +0的時間做記錄
用戶可以自己選時區
這樣如何呢?
發表人:
bbx1
時間:
2010-5-11 10:09 AM
目前我的作法是紀錄UTC, 因為沒有使用者註冊機制
所以改用判斷使用者的 IP 得出 Timezone Location, 再把讀出來的 UTC 轉為 使用者當地時間
只是有個小麻煩的地方是: 如果管理員要直接 Database 維護時, 時間就不是當地時間了
相反地, 如果用Server Time做紀錄的話就可以排除掉上述的麻煩
但想了一下好像反而更不妥:
1. query 出來的 Time 要先轉為 UTC, 再轉為當地時間, 頗麻煩 (以效能而言)
2. 如果未來 Server 轉移不知道會不會產生問題 (MySQL 的 Current_Timestamp 屬性?)
感覺兩種作法都有其缺點, 不過因為我會做管理員後台, Admin可以從網頁上控管資料, 所以我才選第一種方式紀錄
陽だまり先輩, gmt 在沒有使用者機制下用做紀錄妥當嗎?
我是考慮還要分析日光節約太麻煩所以改用 Timezone 的XD
指教指教, tnx
發表人:
陽だまり
時間:
2010-5-11 09:51 PM
小弟不是前輩
不過用ip來判定的話
whois回來的同樣是us
但時區就有不同的地方不是
所以這應該也是不準
而就算讓使用者可以自己選擇
也不見得所有的使用者都會選擇自己正確的時區這樣
不過小弟不知bbx1兄主要的目的是做什麼
所以也不確定那一種比較好這樣
發表人:
ma1111
時間:
2010-5-12 01:38 AM
基本上很簡單,
資料庫重點是統合,時間定義清楚就好,
用gmt +0或主機時間都可以(主機要裝校時軟體)
至於使用者的時區問題,應該在UI層再作轉換
發表人:
bbx1
時間:
2010-5-12 02:21 PM
不只有國家吧? timezone應該還有細分區域, 我是知道PHP有:
http://www.php.net/manual/en/timezones.america.php
網路上也滿多人在問 Auto Detecting user's timezone 的方式
還沒很仔細研究過, 不過我想大概沒問題吧?
我想做的網站嘛.... 舉例來說:
一個國際的新聞網站, 在不需要使用者註冊的情況下
新聞快訊的時間會自動轉換為瀏覽者的當地時間
引用:
ma1111
寫到:
基本上很簡單,
資料庫重點是統合,時間定義清楚就好,
用gmt +0或主機時間都可以(主機要裝校時軟體)
至於使用者的時區問題,應該在UI層再作轉換
那倒也是, 或許我過於吹毛求疵吧XD
想知道有沒有兩全其美的辦法是自己沒想到的就是了:p
發表人:
陽だまり
時間:
2010-5-12 06:08 PM
如果要轉成當地時間來顯示的話
那可以一個欄位記錄gmt+0的時間、第二個欄位記錄+-n的時間這樣
或者要詳細一點資料的話、多二個欄位分別記錄國家、區這樣
使用者只會用到gmt+0的時間、+-n的數字
管理者會多用到國家、區這樣
跑的效能應該是不用擔心
只要資料庫規劃的好,都不會是太大問題
發表人:
bbx1
時間:
2010-5-17 09:59 AM
謝謝各位的意見, 目前就以標準時間來做基準試寫下去
到時候如果有其他沒考量到的情況發生再向各位報告
謝謝各位了 :)
發表人:
桂正和
時間:
2010-7-28 02:08 AM
我自己的做法是以伺服器時間為主
但是如果是要考量到全世界的角度來看的話
用GMT+0會比較好
另外儲存時間的格式來說
其實我不愛用時間欄位
反而是用數值欄位
例如
20100728020500這樣
主要是方便比對
而且有時候會因為主機的格式不同或其他問題
導致轉換上會有很多小狀況發生
單純存成數值型態的話
也比較不會有這類問題
輸出到頁面的時候
再利用程式在寫個轉換的小函數去轉換回正規時間格式即可
發表人:
GERRYccc
時間:
2010-9-8 11:35 PM
我想AP會用到的時間欄位,通常都是跟伺服器時間比較有關,
因此我一定都會存伺服器時間,若需考量全世界的時間共用,
我會讓使用者選擇時區,在撈出時間後再去做加或減時區轉換。
而資料庫欄位的型態上,我偏好使用14碼字串(String): 20100908233552
要使用時一樣再用函式去做轉換成適合使用者看的格式,
好處是顯示方便、轉換方便、比對方便、比較大小也方便!!
上述供您參考.
[GERRYccc 在 2010-9-8 11:36 PM 作了最後編輯]
歡迎光臨 TWed2k (http://twed2k.org/)
Powered by Discuz! 4.1.0