You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel应用中如何将UTC存储的时间转为南非时区显示

Laravel中UTC存储数据转南非时区展示方案

下面是几种不同场景下的实现方式,根据你的需求选择:

全局系统级配置(推荐,若全系统都需南非时区)

直接修改config/app.php中的时区配置,将默认时区设置为南非时区:

'timezone' => 'Africa/Johannesburg',

修改后,Laravel会自动把数据库中UTC存储的created_at/updated_at等时间字段,转换为南非时区后再返回,无需手动处理每个字段。注意:数据库存储仍保持UTC,这是最佳实践。

单个模型专属配置

如果只有特定模型需要转换时区,可在模型中定义访问器覆盖默认字段:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;

class YourModel extends Model
{
    // 转换created_at为南非时区
    public function getCreatedAtAttribute($value)
    {
        return Carbon::parse($value)->timezone('Africa/Johannesburg');
    }

    // 同理可处理updated_at
    public function getUpdatedAtAttribute($value)
    {
        return Carbon::parse($value)->timezone('Africa/Johannesburg');
    }
}

这样该模型实例的时间字段,默认返回的就是南非时区的时间。

视图层临时转换(适合特定视图需求)

如果只是在某个视图中需要转换,直接在Blade模板里调用Carbon的时区方法即可:

{{ $record->created_at->timezone('Africa/Johannesburg')->format('Y-m-d H:i:s') }}

或者简写为tz()方法,效果一致:

{{ $record->created_at->tz('Africa/Johannesburg')->format('Y-m-d H:i:s') }}

验证时区正确性

可以通过Artisan Tinker快速验证转换是否正确:

php artisan tinker

在tinker中执行:

Carbon::now()->utc()->timezone('Africa/Johannesburg')

查看输出是否与南非当地时间一致,确认时区标识符Africa/Johannesburg无误。

内容的提问来源于stack exchange,提问作者Tallal Saghir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:42:33