srawnay/laravel-timezone

Laravel 的时区存储和检索

1.12.0 2022-05-01 16:06 UTC

README

Latest Version on Packagist Total Downloads Licence Quality Score StyleCI Buy us a tree Treeware (Trees)

为您的应用程序中的用户设置时区,然后以他们的本地时区显示日期/时间的一种简单方法。

工作原理

此包监听 \Illuminate\Auth\Events\Login 事件,然后自动为您的 user 模型(存储在数据库中)设置 timezone

此包使用 torann/geoip 包,根据用户的 IP 地址查找用户的位置。该包还返回有关用户的货币和用户时区的信息。 如果您需要,可以单独配置此包

如何使用

您可以通过以下方式向您的用户显示其时区的日期:

{{ Timezone::convertToLocal($post->created_at) }}

或者使用我们漂亮的 blade 指令

@displayDate($post->created_at)

更多示例见下文

安装

使用 Composer 引入此包

composer require srawnay/laravel-timezone

发布数据库迁移

php artisan vendor:publish --provider="Srawnay\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="Srawnay\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.phpflash 属性的值即可。您可以通过设置 'flash' => 'off' 来禁用闪存消息。

覆盖数据库中的现有时区

默认情况下,每次登录时都会用当前用户时区覆盖时区。可以通过设置 'overwrite' => false, 配置选项来仅更新如果时区为空时才更新时区。

默认格式

默认日期格式为 jS F Y g:i:a。要覆盖此配置,您只需更改配置文件 config/timezone.phpformat 属性的值即可。

查找数组

此查找数组配置允许通过任何键在 Laravel 的 request 辅助函数的任何属性中找到用户的远程地址。考虑到键在属性内部找到时,将使用该键。默认情况下,我们使用带有 REMOTE_ADDR 键的 server 属性。要覆盖此配置,您只需更改配置文件 config/timezone.php 中所需的查找的 lookup 属性。

底层 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, 设置为解决此问题。在此处了解更多关于此问题的信息