沃同 / laravel-timezone
Laravel 的时区存储和检索
Requires
- php: >=7.4
- laravel/framework: 5.6.*|5.7.*|5.8.*|^6|^7|^8|^9|^10|^11
- nesbot/carbon: ^1|^2|^3
- torann/geoip: ^3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2|^3
This package is not auto-updated.
Last update: 2024-09-19 10:06:05 UTC
README
一种简单的方法为您的应用程序中的用户设置时区,然后以他们的本地时区显示日期和时间。
工作原理
此包监听 \Illuminate\Auth\Events\Login
事件,然后自动在您的 user
模型(存储在数据库中)上设置 timezone
。
此包使用了 torann/geoip 包,该包根据用户的 IP 地址查找用户的位置。该包还返回有关用户货币和用户时区等信息。 如果您需要,可以单独配置此包。
如何使用
您可以使用以下方式向您的用户显示时区内的日期
{{ Timezone::convertToLocal($post->created_at) }}
或者使用我们的 blade 指令
@displayDate($post->created_at)
安装
使用 Composer 拉取此包
composer require votong/laravel-timezone
发布数据库迁移
php artisan vendor:publish --provider="VoTong\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="VoTong\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=config
提示信息
时区设置后,我们显示一个提示信息。默认情况下,配置为使用 Laravel 默认的提示信息,以下是一些可选集成。
laracasts/flash - 'flash' => 'laracasts'
mercuryseries/flashy - 'flash' => 'mercuryseries'
spatie/laravel-flash - 'flash' => 'spatie'
mckenziearts/laravel-notify - 'flash' => 'mckenziearts'
usernotnull/tall-toasts - 'flash' => 'tall-toasts'
要覆盖此配置,您只需更改配置文件 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
属性以进行所需的查找。
用户消息
您可以通过更改 config/timezone.php
配置文件中的 message
属性来配置设置时区时显示给用户的消息。
底层 GeoIp 包
如果您想自定义底层的 torann/geoip
包,可以使用以下命令发布配置文件。
php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config
变更日志
请参阅 变更日志 了解最近的变化信息。
贡献
请参阅 贡献指南 了解详细信息。
许可证
此包100%免费和开源,遵循MIT许可证。您可以使用它做任何事情。
此包是 Treeware 的。如果您在生产环境中使用它,我们要求您 为世界种一棵树 以感谢我们的工作。通过为 Treeware 森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。
问题
如果您收到类似 此缓存存储不支持标记
的消息,这是因为 torann/geoip
包需要一个支持标记的缓存驱动程序,您可能已将应用程序设置为使用 file
缓存驱动程序。您可以通过 发布配置文件 为 torann/geoip
包设置 'cache_tags' => null,
来解决这个问题。在此处了解更多关于此问题。