基本上,当我在表格中获得datetime列时,我想根据用户时区调整其日期和时间。
我有这段代码,但它似乎不起作用,即使我已经改变了它的时区,时间永远不会改变:
public function getCreatedAtAttribute($datetime) {
$timezone = \Auth::user()->timezone;
$datetime = $this->asDateTime($value);
return $datetime->timezone($timezone);
}
请帮忙。
答案 0 :(得分:0)
使用date_default_timezone_set()
设置用户时区。
public function getCreatedAtAttribute($datetime) {
$timezone = \Auth::user()->timezone;
//Call date_default_timezone_set function to set user timezone or whenever it appropieate
date_default_timezone_set($timezone);
$datetime = $this->asDateTime($value);
return $datetime->timezone($timezone);
}
<强>更新强>
还可以使用Config::set('app.timezone', $timezone)
更改laravel配置时区。
答案 1 :(得分:0)
您可以使用Carbon库将其转换为用户指定的时区,该库已在Laravel内部 - 您无需添加或安装任何软件包。 像这样:
public function getCreatedAtAttribute($datetime) {
return $datetime->timezone(\Auth::user()->timezone)->format('Y-m-d H:i:s');
}