gtmassey/quarter

轻松检索任何年份的日历季度或会计季度的开始和结束日期。gtmassey/period的扩展

v1.1 2023-08-03 17:50 UTC

This package is auto-updated.

Last update: 2024-09-03 20:07:54 UTC


README

Latest Version on Packagist Total Downloads Tests

轻松检索任何年份的日历或会计季度的开始和结束日期!

安装

您可以通过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/periodPeriod类的扩展,生成的季度对象的结构方式相同

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();

您可以将yearfiscal方法一起链式调用

//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)。有关更多信息,请参阅 许可证文件