配置/app.php
'timezone' => 'America/New_York',
我正在嘗試app.timezone在 clientTimeZone 上更新我的基礎Asia/Kolkata
$date = new DateTime();
$timeZone = $date->getTimezone();
echo $timeZone->getName().PHP_EOL;
$timezone_offset_minutes = 330;
$clientTimeZone = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
echo $clientTimeZone .PHP_EOL;
Session::put('clientTimeZone',$clientTimeZone);
config('app.timezone', $clientTimeZone);
$date = new DateTime();
$timeZone = $date->getTimezone();
echo $timeZone->getName() .PHP_EOL;
這是結果
America/New_York
Asia/Kolkata
America/New_York
我有一種感覺,這
config('app.timezone', $clientTimeZone);
沒有任何效果
uj5u.com熱心網友回復:
DateTime 類接受兩個引數,第二個是?DateTimeZone $timezone = null. 如果省略或為空,將使用當前時區。
$timezone = new DateTimeZone('America/New_York');
$date = new DateTime('now', $timezone);
Laravel 的app.timezone配置不會直接影響 DateTime。
在引導 Laravel 應用程式時,它以這種方式設定時區
date_default_timezone_set($config->get('app.timezone', 'UTC'));
要使用客戶端時區,您可以在會話期間全域設定它
$timezone_offset_minutes = 330;
$clientTimeZone = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
date_default_timezone_set($clientTimeZone);
請記住,它不會影響任何其他應用程式,即 mysql。Mysql 仍然會app.timezone在應用程式引導程式上使用 read。
我建議將客戶端時區傳遞給任何方法、函式并以這種方式使用它
$timezone_offset_minutes = 330;
$clientTimeZone = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
$this->getClientDateTime(new DateTimeZone($clientTimeZone));
//...
public function getClientDateTime(DateTimeZone $dateTimeZone): string
{
return new DateTime('now', $dateTimeZone->format('Y-m-d H:i:s');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420167.html
標籤:
