cyberpunkcodes / laravel-moment-timezone
Laravel包,使用Moment显示用户时区的日期和时间
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0
Requires (Dev)
- laravel/framework: ^9.0|^10.0
README
Laravel包,使用Moment和Moment Timezone将日期/时间转换为用户的本地时间。
特别感谢Blade UI Kit为本包提供基础。如果您需要输入、按钮、警告等UI组件,请务必查看。
安装
使用Composer安装
composer require cyberpunkcodes/laravel-moment-timezone
将指令添加到布局中,在所有其他脚本加载完成后,在</body>
标签之前,以加载所需的JavaScript文件
@momentScripts
建议发布配置文件,这样更新此包时不会自动升级Moment和Moment Timezone JavaScript文件,以免在生产环境中给您带来惊喜。通过发布配置文件,资产版本不会更新,直到您手动在配置中更新它们。
运行以下命令发布配置文件:
php artisan vendor:publish --tag=moment-config
在config/moment.php
中,您将看到一个包含子scripts
数组的assets
数组。此数组中的每个脚本都将由@momentScripts
指令直接打印。
包含完整的<script></script>
标签。这样您就可以从CDNJS等来源复制它,并保持完整性哈希检查。
可选地,您可以将脚本添加到您的资产打包/压缩处理器中。在这种情况下,您将不会使用@momentScripts
指令。
如果您想自定义组件的视图文件,请运行
php artisan vendor:publish --tag=moment-views
用法
将视图文件中的所有日期/时间替换为moment组件
<x-moment :date="$user->created_at" format="F jS, Y \a\t g:i a" />
这将显示为:2023年1月23日,中午12:07
默认用法使用PHP的日期时间格式化。有关更多详细信息,请参阅此处PHP文档:https://php.ac.cn/manual/en/datetime.format.php
可读性
要显示为可读性,打印"2分钟前"或"2个月前",您可以简单地添加human
属性,如下所示
<x-moment :date="$user->created_at" format="F jS, Y \a\t g:i a" human />
本地时区
最后,如果您想显示用户的本地时区的日期/时间,只需添加local
属性,如下所示
<x-moment :date="$user->created_at" format="MMMM Do, Y [at] h:mm a" local />
需要注意的是,使用local
属性时,格式必须使用Moment的格式化规则,而不是PHP。有关更多信息,请参阅Moment格式化规则:https://moment.js.cn/docs/#/displaying/format/
以下是两者的并列比较。它们都显示完全相同的内容。
PHP格式:F jS, Y \a\t g:i a
Moment格式:MMMM Do, Y [at] h:mm a
两者都将显示为:January 23rd, 2023 at 12:07 pm
前缀
如果您还有一个名为moment
的组件,并且遇到了冲突,您可以定义一个自定义前缀。
如果您将前缀设置为cool
,则可以使用组件如下
<x-cool-moment :date="$user->created_at" format="F jS, Y \a\t g:i a" />
在重命名组件后,您可能会看到有关组件找不到的错误。这是由于视图缓存引起的。您必须清除视图缓存
php artisan view:clear
贡献
我打算保持此包简单。用例仅适用于Moment和Moment Timezone。如果您发现错误/错误,或想帮助清理此README,请首先创建一个问题,以便我们可以在您浪费时间在拉取请求之前进行讨论。