因此,我已经使用UTC将任何日期保存在数据库中,并且可以像$ data-> created_at或$ data-> blocked_at一样获取它。因此,在我的配置中,我将时区设置为UTC,然后我希望在查看时将其从UTC转换为UTC + 7或其他时区。
是否有一种简便的方法可以在查看所有日期时转换我想要的时区?
我仍在使用Laravel 5.8
编辑:
我使用的是答案,但可以在我的基本模型上实现,就像这样:
width:20%
然后我将把列名称为$ data-> getDateConverter(“ created_at”);
答案 0 :(得分:2)
您可以使用包含在核心中的Carbon
$timestamp = '2014-02-06 16:34:00';
$date = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'Europe/Stockholm');
$date->setTimezone('UTC');
欧洲/斯德哥尔摩是您的默认时区,而UTC是您要设置的时间
如果要在显示时将其从模型转换,请尝试访问器
public function getCreatedAtAttribute($value)
{
$date = Carbon::createFromFormat('Y-m-d H:i:s', $value, 'Europe/Stockholm');
$date->setTimezone('UTC');
return $date->toDateTimeString();
}
答案 1 :(得分:0)
如果在插入时间时想更改时区,那么
使用'timezone' => 'Asia/Kolkata'
。在您的config / app.php
通过此操作,您可以设置应用程序的默认时区。
答案 2 :(得分:0)
您可以使用将此功能添加到您的模型中
public function setViewDateFormat( $date ) {
return Carbon::parse( $date ,'Africa/Cairo')->format( 'j F Y' );
}
然后在任何日期属性上调用它
public function getFormattedCreatedAtAttribute() {
return ( $this->created_at ) ? $this->setViewDateFormat( $this->created_at ) : null;
}
这样您就可以设置所有日期时区和格式。