日本の営業日計算ライブラリ(PHP 版)— go-heijitu の PHP 移植版。
- PHP 7.4 または 8.x
このパッケージは GitHub 経由で配布しています(Packagist 未公開)。composer.json に VCS リポジトリを追加してください。
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/taku-o/php-heijitu"
}
]
}ライブラリをインストールします。
composer require taku-o/php-heijitu| プロバイダー | 必要パッケージ | インストールコマンド |
|---|---|---|
| HolidayJp | holiday-jp/holiday_jp |
composer require holiday-jp/holiday_jp |
| GoogleCalendar | google/apiclient |
composer require google/apiclient:~2.16.0 |
| CaoCsv(SJIS デコード) | ext-mbstring |
PHP 拡張(ほとんどの環境で標準搭載) |
| 設定ファイル YAML 対応 | symfony/yaml |
composer require symfony/yaml |
<?php
require 'vendor/autoload.php';
date_default_timezone_set('Asia/Tokyo');
use Heijitu\BusinessCalendar;
use Heijitu\Providers\HolidayJp\Provider as HolidayJpProvider;
$provider = new HolidayJpProvider();
$cal = new BusinessCalendar($provider);
$date = new DateTimeImmutable('2024-01-01');
echo ($cal->isBusinessDay($date) ? 'true' : 'false') . PHP_EOL; // false
echo $cal->nextBusinessDay($date)->format('Y-m-d'); // 2024-01-04use Heijitu\MonthDay;
$cal = new BusinessCalendar($provider, [
new MonthDay(8, 15), // お盆
new MonthDay(12, 31), // 大晦日
]);use Heijitu\Config;
$excluded = Config::loadExcludedDates('/path/to/config.json');
$merged = array_merge($excluded, [new MonthDay(12, 31)]);
$cal = new BusinessCalendar($provider, $merged);JSON 形式:
{
"excluded_dates": [
{ "month": 8, "day": 15 },
{ "month": 12, "day": 31 }
]
}YAML 形式(symfony/yaml が必要):
excluded_dates:
- { month: 8, day: 15 }
- { month: 12, day: 31 }各プロバイダーのセットアップ方法は docs/ja/providers.md を参照してください。
| プロバイダー | 依存パッケージ | データソース |
|---|---|---|
HolidayJp |
holiday-jp/holiday_jp |
組み込みデータ(オフライン) |
CaoCsv |
ext-mbstring |
内閣府 CSV(オンライン取得またはローカルファイル) |
GoogleCalendar |
google/apiclient |
Google Calendar API |
このライブラリは PHP のデフォルトタイムゾーンを使って日付を比較します。必ずライブラリ使用前にタイムゾーンを Asia/Tokyo に設定してください。
date_default_timezone_set('Asia/Tokyo');設定しない場合、深夜 0 時付近の日付で 1 日ずれる可能性があります。
MIT — 詳細は LICENSE を参照してください。