overtrue / chinese-calendar

:date: 中国农历(阴历)与阳历(公历)转换与查询工具
MIT License
524 stars 109 forks source link

干支的年份计算错了 2022-01-20 是辛丑年 算成了壬寅年 #50

Open xiongjinchao opened 2 years ago

xiongjinchao commented 2 years ago

     * 农历年份转换为干支纪年.
     *
     * @param int      $lunarYear
     * @param null|int $termIndex
     *
     * @return string
     */
    public function ganZhiYear($lunarYear, $termIndex = null)
    {
        /**
         * 据维基百科干支词条:『在西历新年后,华夏新年或干支历新年之前,则续用上一年之干支』
         * 所以干支年份应该不需要根据节气校正,为免影响现有系统,此处暂时保留原有逻辑
         * https://zh.wikipedia.org/wiki/%E5%B9%B2%E6%94%AF.
         *
         * 即使考虑节气,有的年份没有立春,有的年份有两个立春,此处逻辑仍不能处理该特殊情况
         */
        $adjust = (null !== $termIndex && 3 > $termIndex) ? 1 : 0;

        $ganKey = ($lunarYear + $adjust - 4) % 10;
        $zhiKey = ($lunarYear + $adjust - 4) % 12;

        return $this->gan[$ganKey].$this->zhi[$zhiKey];
    }```

    这里 3 > $termIndex 应该是 3 <= $termIndex
    我没有仔细研究农历,你看看这里是不是写错了。