2017-05-30 114 views
0

如何根據用戶的時區設置記錄時間戳?根據用戶時區設置設置Codeigniter時間戳

例如:

  1. 用戶有時區設置爲$ my_tz = 「UP3」;
  2. 用戶將項目的截止日期設置爲$ time_to_set =「2017-05-31 03:15 PM」;
  3. 我需要具有不同時區設置的用戶根據其時區正確地轉換時間(例如,USER 1:UP3,USER 2:UP8)。他們需要正確看待時間。我試圖設置,但抵消似乎有1小時的差異,這是不準確的。
  4. 我會需要時間設置爲時區(UP3)轉換爲(UTC)的基地,而不用+1小時。

非常感謝!

這是我的代碼,你可以測試看看我的意思。

$my_tz = "UP3"; 
    $utc_time = local_to_gmt(time()); 
    $current_time = gmt_to_local($utc_time, $my_tz, FALSE); 

    echo "Current Time: ".unix_to_human($current_time)."</br>"; 
    echo $current_time; 
    echo "</br></br></br></br>"; 

    $time_to_set = "2017-05-31 03:15 PM"; 
    $time_set_unix = human_to_unix($time_to_set); 
    $time_to_normal = local_to_gmt($time_set_unix, "UP8", FALSE); 

    echo $time_to_set."</br>"; 
    echo $time_set_unix."</br>"; 
    echo $time_to_normal."</br>"; 
    echo unix_to_human($time_to_normal)."</br>"; 
+0

如果您需要根據用戶時區進行設置,那麼您必須使用基於國家/地區的位置,那麼您將獲得完美的時區,以下是對您有幫助的參考.https://github.com/maxmind/geoip -api-php/blob/master/src/timezone.php – Astound

+0

是的,這樣好多了。 –

回答

0

我解決了我的問題。我拋棄了CI Date Helper並選擇了默認的PHP。這比通過反覆試驗要好得多,總是得到一個偏離實際時間的偏移量。

@ astound的回答也對此有所幫助。

+0

謝謝男士,請在評論中發表評論謝謝我的回答謝謝 – Astound