lexiandev/laravel-timezone

Laravel的时间区存储和检索

2.0.2 2024-04-05 22:56 UTC

This package is auto-updated.

Last update: 2024-09-05 23:59:30 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 lexiandev/laravel-timezone

发布数据库迁移

php artisan vendor:publish --provider="Lexiandev\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="Lexiandev\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_ADDRserver属性。要覆盖此配置,只需更改配置文件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,设置,以解决这个问题。在此处了解更多关于此问题