quangbao / laravel-timezone
Laravel 的时区存储和检索
Requires
- php: >=7.4
- laravel/framework: 5.6.* || 5.7.* || 5.8.* || ^6 || ^7 || ^8
- nesbot/carbon: ^1.0 || ^2.0
- torann/geoip: ^3.0.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
This package is not auto-updated.
Last update: 2024-09-28 19:47:34 UTC
README
为您的应用程序中的用户设置时区,并显示他们所在时区的日期/时间的一种简单方法。
如何工作
此包监听 \Illuminate\Auth\Events\Login 事件,并将自动设置 timezone 在您的 user 模型上(存储在数据库中)。
此包使用 torann/geoip 包,根据用户的 IP 地址查找用户的位置。该包还会返回有关用户货币和用户时区等信息。 如果您需要,可以单独配置此包。
如何使用
您可以使用以下方式显示用户所在时区的日期:
{{ Timezone::convertToLocal($post->created_at) }}
或者使用我们漂亮的 blade 指令
@displayDate($post->created_at)
安装
使用 Composer 拉取包
composer require quangbaorp/laravel-timezone
发布数据库迁移
php artisan vendor:publish --provider="quangbaorp\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 时间
这将获取一个日期/时间,将其设置为用户时区,然后以 Carbon 实例返回 UTC。
$post = Post::create([ 'publish_at' => Timezone::convertFromLocal($request->get('publish_at')), 'description' => $request->input('description'), ]);
自定义配置
发布配置文件是可选的。
php artisan vendor:publish --provider="quangbao\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=config
闪存消息
时区设置后,我们显示一个闪存消息。默认情况下,配置为使用 Laravel 默认的闪存消息,以下是一些可选集成。
laracasts/flash - 'flash' => 'laracasts'
mercuryseries/flashy - 'flash' => 'mercuryseries'
spatie/laravel-flash - 'flash' => 'spatie'
mckenziearts/laravel-notify - 'flash' => 'mckenziearts'
要覆盖此配置,只需更改配置文件 config/timezone.php 中的 flash 属性即可。您可以通过设置 'flash' => 'off' 来禁用闪存消息。
覆盖数据库中的现有时区
默认情况下,时区将在每次登录时被当前用户的时区覆盖。可以通过设置 'overwrite' => false, 配置选项来限制这种行为,只有当时区为空时才更新时区。
默认格式
默认日期格式将是 jS F Y g:i:a。要覆盖此配置,只需更改配置文件 config/timezone.php 中的 format 属性即可。
查找数组
此查找数组配置使得能够在Laravel request 辅助函数的任何属性中,通过任何键找到用户的远程地址。考虑到当键在属性中找到时,将使用该键。默认情况下,我们使用带有键 REMOTE_ADDR 的 server 属性。要覆盖此配置,您只需更改配置文件 config/timezone.php 中相应的 lookup 属性。
底层GeoIp包
如果您希望自定义底层的 torann/geoip 包,可以使用以下命令发布配置文件。
php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config