Laravel 时间区设置库:Laravel Timezone
Laravel Timezone 是一个针对 Laravel 框架的实用扩展包,它帮助你在应用中轻松为用户设定时区,并以用户本地时间展示日期和时间。利用这个库,你可以提供更加人性化的体验,让用户在不同地理位置也能看到符合他们习惯的时间。
如何工作
Laravel Timezone 在用户登录时监听 \Illuminate\Auth\Events\Login
事件,然后自动将用户的时区信息存储到数据库中的 user
模型。借助于 torann/geoip 包,它可以通过 IP 地址查找用户的位置,包括货币和时区等信息。你也可以单独配置该包来满足特殊需求。
使用方法
要显示用户所在时区的日期和时间,你可以:
{{ Timezone::convertToLocal($post->created_at) }}
或使用方便的 Blade 指令:
@displayDate($post->created_at)
安装
通过 Composer 引入包:
composer require jamesmills/laravel-timezone
发布数据库迁移文件:
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
运行数据库迁移,这将在 users
表上添加一个 timezone
列:
php artisan migrate
示例
显示用户时区中的日期/时间
默认格式是 jS F Y g:i:a
,不会显示时区:
{{ Timezone::convertToLocal($post->created_at) }}
// 4th July 2018 3:32:am
自定义格式并附带友好时区:
{{ Timezone::convertToLocal($post->created_at, 'Y-m-d g:i', true) }}
// 2018-07-04 3:32 New York, America
Blade 指令使用
让编程变得更简单:
@displayDate($post->created_at)
// 4th July 2018 3:32:am
自定义格式化:
@displayDate($post->created_at, 'Y-m-d g:i', true)
// 2018-07-04 3:32 New York, America
保存用户输入的UTC时间
将用户输入的时间转换为其时区,再以UTC形式存入数据库(作为 Carbon 实例):
$post = Post::create([
'publish_at' => Timezone::convertFromLocal($request->get('publish_at')),
'description' => $request->input('description'),
]);
自定义配置
可选地,你可以发布配置文件:
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=config
特点
- 自动在用户登录时设置时区。
- 根据 IP 查找用户位置,包括时区和货币信息。
- 支持自定义日期格式和显示时区名称。
- 提供 Blade 直接指令简化代码。
- 可选集成多个闪现消息包,如 laracasts/flash 和 spatie/laravel-flash。
- 可配置是否覆盖数据库已存在的时区信息。
- 用户消息可定制,可以修改登录后显示的提示信息。
如果你正在寻找一种简单而强大的方式来处理用户时区问题,那么 Laravel Timezone 肯定值得尝试。立即安装并探索更多可能性,提升你的 Laravel 应用的用户体验吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考