正在處理一個大型應用程序時,我試圖使日期時間戳與當前用戶時間保持一致。所以如果活動ID在下午3:00進行,則每個用戶在3:00 PM如何計算大型應用程序的時區偏移量?
看到它所以這裏是解決步驟的問題。對此,如果我的方向不正確,請糾正我或讓我走向正確的方向。
將所有日期時間存儲在MySql中作爲UTC時間。
與當前偏移錶店時區。例如
zone_id zone_name utc-offset 1 Central -6
在我的用戶表我有一個字段user_time_zone_id並在該領域我將在用戶設置爲「1」的值,它會說,這個用戶正在使用「中央系統「 位置。
在我的PHP應用程序配置我的默認時區設置爲UTC這樣
date_default_timezone_set('UTC');
一旦我打開這個應用程序,我定義用戶偏移和每個日期時間出去放我做的計算時間。例如
date('Y-m-d', strtotime($current_offset.' hour')) where $current_offset = -6
,因爲它是在頁面加載時由用戶配置文件定義的。
這是我的問題。
是我的方法解決這個問題是否正確? 有沒有更好的方法來做到這一點? 如何計算夏令時?請記住,該國有部分地區沒有夏令時。
不要手動進行偏移。使用date_default_timezone_set()將應用程序設置爲用戶的時區。有[時區的特質(http://stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result/6841479#6841479)你不該不會浪費你的時間來計算PHP何時會自動執行。 –
哦,這是個好主意。所以將頁面設置爲當前用戶設置,然後當用戶加載頁面時,他們的一切都將轉換爲他/她當前的日期時間。但是等待他們想要編輯日期時間字段時會發生什麼? – Jaylen
我不建議爲此使用'date_default_timezone_set',這可能會導致問題和混淆,因爲當您的數據庫中的日期與放入PHP時位於不同的時區時。它也可能會混淆意想不到的事情,例如,日誌文件輸出中的時間戳。 – Adrian