gtmassey / quarter
轻松检索任何年份的日历季度或会计季度的开始和结束日期。gtmassey/period的扩展
Requires
- php: ^8.1||^8.2
- gtmassey/period: ^1.1.0
- nesbot/carbon: ^2.64
Requires (Dev)
- laravel/pint: ^1.2.1
- nunomaduro/collision: ^6.3.1
- nunomaduro/larastan: ^2.2.9
- orchestra/testbench: ^7.15|^8.0
- phpstan/extension-installer: ^1.2
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-mockery: ^1.1
- phpstan/phpstan-phpunit: ^1.2.2
- phpunit/phpunit: ^9.5.26
- rregeer/phpunit-coverage-check: ^0.3.1
README
轻松检索任何年份的日历或会计季度的开始和结束日期!
安装
您可以通过composer安装此包
composer require gtmassey/quarter
此包是gtmassey/period包的扩展。您可以在此处找到该包的文档。
用法
该包提供了一个包含针对每年每个季度的静态方法的Quarter
类,以及可以链式调用的附加方法,允许对季度进行特定年份、日历类型和日期的修改。
//Jan 1, YYYY - Mar 31, YYYY Quarter::first(); //Apr 1, YYYY - Jun 30, YYYY Quarter::second(); //Jul 1, YYYY - Sep 30, YYYY Quarter::third(); //Oct 1, YYYY - Dec 31, YYYY Quarter::fourth();
作为来自gtmassey/period的Period
类的扩展,生成的季度对象的结构方式相同
Gtmassey\Quarter\Quarter {#6221
+startDate: Carbon\CarbonImmutable @1672531200 {#6224
date: 2023-01-01 00:00:00.0 UTC (+00:00),
},
+endDate: Carbon\CarbonImmutable @1680307199 {#6220
date: 2023-03-31 23:59:59.999999 UTC (+00:00),
},
}
指定年份
如果您想指定季度的年份,可以在季度上链式调用year()
方法。请注意,您必须将年份格式化为YYYY
。如果不这样做,它将直接取年份,例如0020年。
//Jan 1, 2020 - Mar 31, 2020 Quarter::first()->year(2020); //Jan 1, 0020 - Mar 31, 0020 Quarter::first()->year(20); //Jan 1, 1995 - Mar 31, 1995 Quarter::first()->year(1995);
更改结果对象
默认情况下,Quarter
类返回一个Quarter
对象。您可以通过调用asPeriod()
方法默认回到父Period
对象
Quarter::first()->asPeriod();
这将得到类似这样的Period实例
Gtmassey\Period\Period {
+startDate: Carbon\CarbonImmutable @1672531200 {
date: 2023-01-01 00:00:00.0 UTC (+00:00),
},
+endDate: Carbon\CarbonImmutable @1680307199 {
date: 2023-03-31 23:59:59.999999 UTC (+00:00),
},
}
更改日历类型
到目前为止,季度方法已经假定季度日期为日历年。如果您想使用第一个季度从7月1日开始的第一财政年度,您可以链式调用fiscal()
方法
//July 1, YYYY - September 30, YYYY Quarter::first()->fiscal();
您可以将year
和fiscal
方法一起链式调用
//July 1, 1995 - September 30, 1995 Quarter::first()->year(1995)->fiscal();
如果您想得到父Period
类的实例,可以链式调用asPeriod()
方法
//July 1, 1995 - September 30, 1995 Quarter::first()->year(1995)->fiscal()->asPeriod();
仅开始和结束日期
有时您只需要访问特定季度的开始和结束日期,而不需要访问整个范围。为此,只需将startDate()
或endDate()
方法添加到链中即可
//July 1, 2020 Quarter::third()->year(20)->startDate();
过去和未来的季度
如果您有一个给定的季度对象,并且想获取下一个季度,可以使用next()
方法
$quarter = Quarter::first()->year(2020); //Jan 1, 2020 - Mar 31, 2020 $next = $quarter->next(); //Apr 1, 2020 - Jun 30, 2020
要从给定的季度对象获取前一个季度,请使用previous()
方法
$quarter = Quarter::first()->year(2020); //Jan 1, 2020 - Mar 31, 2020 $previous = $quarter->previous(); //Oct 1, 2019 - Dec 31, 2019
最后,您可以通过调用current()
方法来访问当前季度
$current = Quarter::current(); //return the dates for the current quarter, regardless of calendar or fiscal dates.
请注意,如果您尝试在current()
方法上使用fiscal()
方法,它不会抛出异常,但它将返回六个月后的季度日期。这是因为Quarter::first()
假设开始日期为1月1日,而Quarter::first()->fiscal()
添加六个月以达到7月1日的开始日期。
这可能会导致一些意外的结果。如果您想计算当前的财政季度,您可以使用current()
来获取当前季度的开始和结束日期,然后您可以使用next()
和previous()
方法来遍历所有季度。
Laravel 注意
父类 Period
是专门为 Laravel 编写的,因为它是从 gtmassey/laravel-analytics 包中提取出来的。然而,季度类(Quarter)不需要 Laravel 就能运行。如果您想在 Laravel 中使用 Quarter
类,可以将该类添加到您的 config/app.php
配置文件的别名数组中
'aliases' => Facade::defaultAliases()->merge([ // 'Example' => App\Facades\Example::class, 'Quarter' => Gtmassey\Quarter\Quarter::class, ])->toArray(),
测试
composer test
变更日志
有关最近变更的更多信息,请参阅 变更日志
贡献
要贡献,请fork仓库,创建一个新分支,并提交一个pull请求。我将尽最大努力及时审阅。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件