diff --git a/CHANGELOG.md b/CHANGELOG.md index 9011b6d..23032ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,3 +9,7 @@ 2. 新增:公历日获取公历周。 3. 修复:公历半年、公历季度、公历时刻推移的错误。 4. 修复:公历季度初始化的错误。 + +## [1.0.3] - 2024-06-06 +1. 新增:节气第几天。 +2. 优化:枚举。 diff --git a/src/enums/FestivalType.php b/src/enums/FestivalType.php index 414e984..ab9ac50 100644 --- a/src/enums/FestivalType.php +++ b/src/enums/FestivalType.php @@ -29,25 +29,25 @@ function getName(): string static function fromCode(int $code): FestivalType { - return match (true) { - $code == 0 => self::DAY, - $code == 1 => self::TERM, - $code == 2 => self::EVE, + return match ($code) { + 0 => self::DAY, + 1 => self::TERM, + 2 => self::EVE, default => null }; } static function fromName(string $name): FestivalType { - return match (true) { - $name == '日期' => self::DAY, - $name == '节气' => self::TERM, - $name == '除夕' => self::EVE, + return match ($name) { + '日期' => self::DAY, + '节气' => self::TERM, + '除夕' => self::EVE, default => null }; } - function equals(Side $o): bool + function equals(FestivalType $o): bool { return $this->value == $o->value; } diff --git a/src/enums/Gender.php b/src/enums/Gender.php index ca3606f..bf7a240 100644 --- a/src/enums/Gender.php +++ b/src/enums/Gender.php @@ -27,23 +27,23 @@ function getName(): string static function fromCode(int $code): Gender { - return match (true) { - $code == 0 => self::WOMAN, - $code == 1 => self::MAN, + return match ($code) { + 0 => self::WOMAN, + 1 => self::MAN, default => null }; } static function fromName(string $name): Gender { - return match (true) { - $name == '女' => self::WOMAN, - $name == '男' => self::MAN, + return match ($name) { + '女' => self::WOMAN, + '男' => self::MAN, default => null }; } - function equals(Side $o): bool + function equals(Gender $o): bool { return $this->value == $o->value; } diff --git a/src/enums/Side.php b/src/enums/Side.php index 5494902..b83039a 100644 --- a/src/enums/Side.php +++ b/src/enums/Side.php @@ -27,18 +27,18 @@ function getName(): string static function fromCode(int $code): Side { - return match (true) { - $code == 0 => self::IN, - $code == 1 => self::OUT, + return match ($code) { + 0 => self::IN, + 1 => self::OUT, default => null }; } static function fromName(string $name): Side { - return match (true) { - $name == '内' => self::IN, - $name == '外' => self::OUT, + return match ($name) { + '内' => self::IN, + '外' => self::OUT, default => null }; } diff --git a/src/enums/YinYang.php b/src/enums/YinYang.php index ce36634..593d9c7 100644 --- a/src/enums/YinYang.php +++ b/src/enums/YinYang.php @@ -27,18 +27,18 @@ function getName(): string static function fromCode(int $code): YinYang { - return match (true) { - $code == 1 => self::YANG, - $code == 0 => self::YIN, + return match ($code) { + 1 => self::YANG, + 0 => self::YIN, default => null }; } static function fromName(string $name): YinYang { - return match (true) { - $name == '阳' => self::YANG, - $name == '阴' => self::YIN, + return match ($name) { + '阳' => self::YANG, + '阴' => self::YIN, default => null }; } diff --git a/src/solar/SolarDay.php b/src/solar/SolarDay.php index b2727fd..32e8e11 100644 --- a/src/solar/SolarDay.php +++ b/src/solar/SolarDay.php @@ -184,12 +184,24 @@ function isAfter(SolarDay $target): bool * @return SolarTerm 节气 */ function getTerm(): SolarTerm + { + return $this->getTermDay()->getSolarTerm(); + } + + /** + * 节气第几天 + * + * @return SolarTermDay 节气第几天 + */ + function getTermDay(): SolarTermDay { $term = SolarTerm::fromIndex($this->month->getYear()->getYear() + 1, 0); - while ($this->isBefore($term->getJulianDay()->getSolarDay())) { + $day = $term->getJulianDay()->getSolarDay(); + while ($this->isBefore($day)) { $term = $term->next(-1); + $day = $term->getJulianDay()->getSolarDay(); } - return $term; + return new SolarTermDay($term, $this->subtract($day)); } /** diff --git a/src/solar/SolarTermDay.php b/src/solar/SolarTermDay.php new file mode 100644 index 0000000..9b9791f --- /dev/null +++ b/src/solar/SolarTermDay.php @@ -0,0 +1,29 @@ +culture; + } +} diff --git a/test/SolarTermTest.php b/test/SolarTermTest.php index 16a79f7..08834aa 100644 --- a/test/SolarTermTest.php +++ b/test/SolarTermTest.php @@ -66,4 +66,17 @@ function test3() { $this->assertEquals('寒露', SolarDay::fromYmd(2023, 10, 10)->getTerm()->getName()); } + + function test4() + { + // 大雪当天 + $this->assertEquals("大雪第1天", SolarDay::fromYmd(2023, 12, 7)->getTermDay()->__toString()); + // 天数索引 + $this->assertEquals(0, SolarDay::fromYmd(2023, 12, 7)->getTermDay()->getDayIndex()); + + $this->assertEquals("大雪第2天", SolarDay::fromYmd(2023, 12, 8)->getTermDay()->__toString()); + $this->assertEquals("大雪第15天", SolarDay::fromYmd(2023, 12, 21)->getTermDay()->__toString()); + + $this->assertEquals("冬至第1天", SolarDay::fromYmd(2023, 12, 22)->getTermDay()->__toString()); + } }