jpmurray / laravel-countdown
提供一种简单的方法来获取两个日期之间的时间差,并为eloquent提供额外的奖励特质。
3.0.0
2020-11-08 19:24 UTC
Requires
- php: ^7.0
- ext-bcmath: *
- illuminate/support: 6.* || 7.* || 8.*
- nesbot/carbon: ^2.0
Requires (Dev)
- mockery/mockery: dev-master@dev
- nesbot/carbon: ^2.0
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~4.0||~5.0
- squizlabs/php_codesniffer: ^2.3
README
jpmurray/laravel-countdown
是一种简单获取两个日期之间时间差的方法,并为eloquent提供额外的奖励特质。
我需要获取时间差,虽然非常优秀的 Carbon 提供了在不同时间单位(小时、分钟等)中检索时间差的帮助器,但没有一种方法可以一次性计算所有的差异。Carbon 的 diffForHumans
很接近,但无法控制其显示的信息以及显示的内容。
安装
您可以通过 composer 安装此包。
$ composer require jpmurray/laravel-countdown
Laravel <= 5.5 的用法
您应该使用此包的版本 <= 3.0.0。
如果您使用的是不支持包自动发现的 Laravel 版本,您需要将服务提供者和外观添加到您的 config/app.php
文件中。
编辑文件:config/app.php
'providers' => [ // ... jpmurray\LaravelCountdown\CountdownServiceProvider::class, // ... ]; // ... 'aliases' => [ // ... 'Countdown' => jpmurray\LaravelCountdown\Facades\CountdownFacade::class, // ... ];
用法
use jpmurray\LaravelCountdown\Countdown; // To get time from 5 years ago until now, you can do the following. // Note that you can send a string to the from and to methods, we will // try to parse it with Carbon behind the scene $now = Carbon::now(); $countdown = Countdown::from($now->copy()->subYears(5)) ->to($now)->get(); // The above will return the Countdown class where you can access the following values. // Those mean that from 5 years ago to now, there is 5 years, 1 week, 1 day, 2 hours 15 minutes and 23 seconds $countdown->years; // 5 $countdown->weeks; // 1 $countdown->days; // 1 $countdown->hours; // 2 $countdown->minutes; // 15 $countdown->seconds; // 23 // It will of course, also work in reverse order of time. // This will get the time between now and some future date $countdown = Countdown::from($now) ->to($now->copy()->addYears(5)) ->get(); // To return to humans string $countdown->toHuman(); // 18 years, 33 weeks, 2 days, 18 hours, 4 minutes and 35 seconds // You to can pass custom string to parse in method toHuman, like this: $countdown->toHuman('{days} days, {hours} hours and {minutes} minutes'); // 2 days, 18 hours, 4 minutes
Eloquent 特质
// For convenience, we provide a trait that you can add to any model in your Laravel app that provides // quick methods to get the values of time between dates. For example: use jpmurray\LaravelCountdown\Traits\CalculateTimeDiff; class User extends Authenticatable { use Notifiable, CalculateTimeDiff; //... }
使用特质的示例
// This enables the following: // You should have casted your attributes to dates beforehand $user = User::find(1); $user->elapsed('trial_ends_at'); // get the time elapsed between the date in attribute trial_ends_at to now $user->until('trial_ends_at'); // get the time from now until the date in attribute trial_ends_at
测试
composer run test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。