zaengle/timezone

帮助管理Laravel中的时区。

0.4 2020-10-22 18:24 UTC

This package is auto-updated.

Last update: 2024-09-23 03:07:10 UTC


README

此包是从Camron Cade的代码分支而来,经过修改以适应Zaengle的使用。更多信息,请阅读Camron关于在Laravel中管理时区的有用文章。时区数组及其底层键是从tamaspap的仓库中获取的。

安装

推荐通过composer安装此包。运行以下代码片段将时区添加到您的项目中

composer require zaengle/timezone

注意:如果您使用的是Laravel 5.5+,可以跳转到使用说明。

完成此操作后,下一步是添加服务提供者。打开config/app.php文件,并将新项添加到服务提供者数组中。

'Zaengle\Timezone\TimezoneServiceProvider'

为了使用外观(Facade),更新别名数组如下

`Timezone` => `Zaengle\Timezone\Facades\Timezone`,

现在它已经准备好使用了!

使用说明

时区转换辅助函数

该包包括两个辅助函数,使处理显示和存储时区变得容易,分别是convertFromUTC()convertToUTC()

每个函数接受两个必需参数和一个可选的第三个参数,用于处理返回的时间戳的格式。

Timezone::convertFromUTC($timestamp, $timezone, $format);
Timezone::convertToUTC($timestamp, $timezone, $format);

第一个参数接受一个时间戳,第二个参数接受要转换到的/从的时区名称。您可以将与选择表单构建器中包含的时区相关的选项值直接插入此处。或者,您可以使用PHP支持的时区中的任何一个。

第三个参数是可选的,默认设置为'Y-m-d H:i:s',这是Laravel将日期时间存储到数据库中的方式(created_atupdated_at列)。

构建选择表单

使用Timezone::toSelectArray(),您可以构建一个与以下类似的已启用时区数组

[
    "America/Los_Angeles" => "(UTC-08:00) Pacific Time (US & Canada)",
    "US/Mountain" => "(UTC-07:00) Mountain Time (US & Canada)",
    "US/Central" => "(UTC-06:00) Central Time (US & Canada)",
    "US/Eastern" => "(UTC-05:00) Eastern Time (US & Canada)",
]

然后,在您的Blade模板中,您可以控制格式

<select name="timezone" id="timezone">
    @foreach(Timezone::toSelectArray() as $key=>$val)
        <option value="{{ $val }}" @if($union->timezone === $val) selected @endif>{!! $key !!}</option>
    @endforeach
</select>

自定义时区

如果您想自定义在toSelectArray()方法中显示的时区,请发布包配置文件并启用/禁用单个时区

php artisan vendor:publish --tag=config --provider="Zaengle\Timezone\TimezoneServiceProvider"

致谢

Camron Cade