![](/img/trans.png)
[英]PHP date_default_timezone_set makes no change to the time() - why?
[英]Does date_default_timezone_set Change The Global Timezone
我繼承了一個 Laravel 項目,其中原始開發人員通過執行以下操作來處理多個用戶的時區計算
date_default_timezone_set($business->timezone);
$time = (int)date("H");
if($time < $business->open_time){
//business is not open yet.
}
(這個邏輯也到處使用。調用了 68 個 date_default_timezone_set 實例)
我擔心的是,如果設置了時區,然后另一個用戶運行代碼來獲取將是錯誤時區的日期。 這是一個有效的問題,還是我可以暫時保留代碼,直到用 Carbon 庫替換所有這些。
Laravel 的全局時區由config/app.php
(laravel 5.X) 的timezone
參數設置。 如果使用date_default_timezone_set,只會在當前代碼范圍內生效,不會影響其他地方。
public function custom(Request $request){
date_default_timezone_set('Asia/Pyongyang');
echo date('Y-m-d H:i:s'); // 2021-07-27 11:35:48
}
public function local(Request $request){
echo date('Y-m-d H:i:s'); // 2021-07-27 10:35:48,my gloabl timezone is Asia/Shanghai
}
在處理多個用戶時區時,最好使用時間戳而不是日期時間函數。 時間戳是通用的存儲。 並且對於輸出可以轉換為任何時區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.