sekidenkiku/syukujitsu

获取日本的节假日。

1.0.2 2020-11-23 09:51 UTC

This package is auto-updated.

Last update: 2024-09-05 16:29:33 UTC


README

获取日本的节假日。

特点

  • 根据《国民的假日法》(1948年7月20日实施)规定的国民假日和休息日(调休日、国民休息日)(以下统称为假日)进行获取。目标对象为1948年7月20日以后的假日。
  • 假日通过DateTime类的扩展类对象返回。
  • 春分和秋分的计算支持到2150年。
  • 已处理2019年和2020年的假日变更。
  • 已处理2021年的假日变更。

注意事项

  • 将来,由于法律修改,假日日期可能会发生变化。
  • 春分和秋分的日期在法律中未具体规定日期,分别称为“春分日”、“秋分日”。本程序使用计算得到的“春分日”、“秋分日”。

安装要求

  • PHP >= 7.1

安装方法

$ composer require sekidenkiku/syukujitsu

使用示例

require_once('vendor/autoload.php');

use sekidenkiku\syukujitsu\Syukujitsu;

$syukujitsu = new Syukujitsu();

使用方法

1.获取假日列表

find(int $year, ?int $month = null): array

结果以HolidayClass类的实例返回。HolidayClass类是DateTime类的扩展类。

  • 获取某月的假日。
$syukujitsu = new Syukujitsu();

// 2020年5月を指定。
$holidays = $syukujitsu->find(2020, 5);

foreach($holidays as $holiday)
{
    // 返値$holidayはDateTimeクラスの拡張クラスオブジェクトなのでformat()で日付の書式を変更できます。
    echo $holiday->format("Y-m-d") . ": " . $holiday->getName() . "<br>";
}
/*
2020-05-03: 憲法記念日
2020-05-04: みどりの日
2020-05-05: こどもの日
2020-05-06: 振替休日
*/

// ■祝日がない場合、空の配列を返します。
$holidays = $syukujitsu->find(2020, 6);

var_dump($holidays); // array(0) {}
  • 获取某年的假日
    省略find函数的参数$month,可以获取整年的假日。
$syukujitsu = new Syukujitsu();

// 2020年を指定。※月の引数を省略。
$holidays = $syukujitsu->find(2020);

foreach($holidays as $holiday)
{
    echo $holiday->format("Y-m-d") . ": " . $holiday->getName() . "<br>";
}
/*
2020-01-01: 元日
2020-01-13: 成人の日
2020-02-11: 建国記念の日
2020-02-23: 天皇誕生日
2020-02-24: 振替休日
2020-03-20: 春分の日
2020-04-29: 昭和の日
2020-05-03: 憲法記念日
2020-05-04: みどりの日
2020-05-05: こどもの日
2020-05-06: 振替休日
2020-07-23: 海の日
2020-07-24: スポーツの日
2020-08-10: 山の日
2020-09-21: 敬老の日
2020-09-22: 秋分の日
2020-11-03: 文化の日
2020-11-23: 勤労感謝の日
*/

// ■対象外の年の場合
$holidays = $syukujitsu->find(1900); 

var_dump($holidays);
// array(0) {} ※祝日を取得できない場合、空の配列を返します。

2.指定日期进行检查

check(string $time): ?HolidayClass

结果以HolidayClass类的实例返回。HolidayClass类是DateTime类的扩展类。

  • 检查2000年1月1日。
$syukujitsu = new Syukujitsu();

$holiday = $syukujitsu->check("2000-01-01");

if( !is_null($holiday) )
{
   echo $holiday->format("Y-m-d") . ": " . $holiday->getName() . "<br>";
}
// 2000-01-01: 元日

// ■祝日でない場合
$holiday = $syukujitsu->check("2000-01-02");

var_dump($holiday); // NULL ※祝日でない場合NULLを返します。

许可证

MIT许可证

补充

返回值的时区默认为默认时区。
如果想要改变时区,请在实例化时设置。

$syukujitsu = new Syukujitsu(new DateTimeZone('Asia/Tokyo'));

$holiday = $syukujitsu->check("2000-01-01");

var_dump($holiday);
/*
object(sekidenkiku\syukujitsu\HolidayClass)#6 (4) {
  ["holiday_name":"sekidenkiku\syukujitsu\HolidayClass":private]=>
  string(6) "元日"
  ["date"]=>
  string(26) "2000-01-01 00:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(10) "Asia/Tokyo"
}
*/