tonysm / local-time-laravel
Basecamp的`local-time`宝石的移植版本。
Requires
- php: ^7.4|^8.0|^8.1|^8.2|^8.3
- illuminate/support: ^8.47|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.0|^8.0
- phpunit/phpunit: ^10.5
README
这是Basecamp的local_time
宝石的Laravel版本。它使得向用户显示本地时间变得简单。其Blade组件将HTML的time
标签渲染为UTC(使其缓存友好),JavaScript组件立即将这些元素从UTC转换为浏览器的本地时间。
安装
- 通过Composer安装此包
composer require tonysm/local-time-laravel
- 通过NPM安装
local-time
JS库
npm install local-time -D
然后在您的resources/app.js
文件中导入它,如下所示
// ... import LocalTime from "local-time" LocalTime.start()
使用方法
此包为您的项目添加了几个Blade组件,它们是
<x-local-time :value="now()" />
使用默认格式字符串格式化Carbon实例。它将常规PHP格式转换为strftime
格式。
<x-local-time :value="now()" format="F j, Y g:ia" />
是<x-local-time />
的别名,默认为月格式。它将此格式转换为%B %e, %Y %l:%M%P
。
<x-local-date :value="now()" format="F j, Y" />
您可以通过将格式作为属性传递给组件来配置使用的格式。其他属性将渲染在生成的time
标签中。
<x-local-time :value="now()" class="my-time" />
使用默认时间格式渲染time
标签,并为元素添加给定的class
标签属性。
注意:包含的strftime JavaScript实现不是100%完整。它支持以下指令:%a %A %b %B %c %d %e %H %I %l %m %M %p %P %S %w %y %Y %Z
时间辅助函数
<x-local-time-ago :value="now()" />
显示过去的一段时间。随着时间的推移,描述从{秒数、分钟数或小时数}过渡到{日期 + 时间},再到{日期}。《time》元素每60秒更新一次。
示例(在引号中)
- 最近:"一秒钟前","32秒前","一小时前","14小时前"
- 昨天:"昨天下午5:22"
- 本周:"周二凌晨12:48"
- 今年:"11月17日"
- 去年:"2012年1月31日"
相对时间辅助函数
预设的时间和日期格式,随年龄变化。可用类型有日期、时间-ago、时间-或日期和星期。
<x-local-relative-time :value="now()" type="weekday" /> <x-local-relative-time :value="now()" type="time-or-date" />
可用的type
选项
date
:除非是当前年,否则包含年份。"4月11日"或"4月11日,2013年"。time-ago
:见上文。《x-local-time-ago》调用《x-local-time-relative》与此type
选项。time-or-date
:如果发生在当天,则显示时间,否则显示日期。"下午3:26"或"4月11日"。weekday
:如果时间在本周内,则显示"今天"、"昨天"或星期几(例如,星期三)。weekday-or-date
:如果在本周内,则显示星期几,否则显示日期。"昨天"或"4月11日"。
示例
php artisan tinker >>> $user->created_at => Illuminate\Support\Carbon @1625103168 {#4106 date: 2021-06-30 22:32:48.0 UTC (+00:00), }
<x-local-time :value="$user->created_at" />
渲染
<time data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2021-06-30T22:32:48Z">June 30, 2021 22:32pm</time>
并在客户端转换为
<time data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2021-06-30T22:32:48Z" title="June 30, 2013 22:32pm EDT" data-localized="true">June 30, 2021 22:32pm</time>
配置
要配置默认的日期和时间格式,您可以在您的AppServiceProvider
中使用LocalTimeLaravelFacade
的useTimeFormat
和useDateFormat
方法,如下所示
<?php use Illuminate\Support\ServiceProvider; use Tonysm\LocalTimeLaravel\LocalTimeLaravelFacade; class AppServiceProvider extends ServiceProvider { public function boot() { LocalTimeLaravelFacade::useTimeFormat('H:i'); LocalTimeLaravelFacade::useDateFormat('d/m/Y H:i'); } }
JavaScript库允许一些配置以及国际化(i18n)。有关更多信息,请参阅Rails宝石文档。
测试
composer test
更新日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全性
如果您发现任何安全相关的问题,请通过tonysm@hey.com发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。
Laravel 包模板
本包是使用Laravel 包模板生成的。