tonysm/local-time-laravel

Basecamp的`local-time`宝石的移植版本。

1.3.0 2024-03-08 03:17 UTC

This package is auto-updated.

Last update: 2024-09-08 04:31:44 UTC


README

Logo Local Time Laravel

Total Downloads License

这是Basecamp的local_time宝石的Laravel版本。它使得向用户显示本地时间变得简单。其Blade组件将HTML的time标签渲染为UTC(使其缓存友好),JavaScript组件立即将这些元素从UTC转换为浏览器的本地时间。

安装

  1. 通过Composer安装此包
composer require tonysm/local-time-laravel
  1. 通过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中使用LocalTimeLaravelFacadeuseTimeFormatuseDateFormat方法,如下所示

<?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 包模板生成的。