簡體   English   中英

date_default_timezone_set 是否更改全球時區

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM