发布于2026-07-04 阅读(0)
扫一扫,手机访问
先说结论:PHP-Lunar 并不是一个能直接通过 Composer 安装的公开包。它既没有在 Packagist 上注册,也没有官方维护团队,所以当你尝试执行 composer require php-lunar/php-lunar 时,终端回馈给你的只会是 Package not found 的报错信息。

网上流传的那些所谓“PHP-Lunar”教程或代码,基本可归为三类:一是某个开发者从私有仓库或 fork 项目中改写的农历转换逻辑,没有统一的命名规范,自然也没注册到 Packagist;二是把 Python 的 lunardate 或 Ja va 的 ChineseCalendar 张冠李戴,误当作 PHP 实现来宣传;三是部分中文博客把自己写的函数或者旧版 calendars 类库硬贴上了这个标签。
实际上,一个稳定、可维护、能通过 Composer 一键安装的农历转换方案,确实存在,只是名字不叫 PHP-Lunar。
overtrue/lara vel-chinese-calendar(Lara vel 场景)这是目前最接近需求、也最省心的选择。它底层基于权威农历算法,节气、闰月校验都做得相当规范,不仅适用于 Lara vel 项目,纯 PHP 环境下也能直接调用。
执行安装命令很简单,一行代码搞定:
composer require overtrue/lara vel-chinese-calendar
基础用法示例:
$calendar = new OvertrueChineseCalendarCalendar(); // 阳历转阴历 $lunar = $calendar->solarToLunar(2024, 10, 1); // 返回 ['year'=>2024, 'month'=>8, 'day'=>28, 'leap'=>false, ...] // 阴历转阳历 $solar = $calendar->lunarToSolar(2024, 8, 28, false); // 返回 ['year'=>2024, 'month'=>10, 'day'=>1]
有几个地方需要特别留意:
nullleap 参数必须明确传 true 或 false,不然闰月判断很容易出错gaozhi/lunar(轻量无框架依赖)如果你不需要 Lara vel 那一套,只想轻装上阵,gaozhi/lunar 是个不错的选择。它没有任何外部依赖,已经发布在 Packagist,兼容 PHP 7.4 以上版本。
composer require gaozhi/lunar
调用方式极其简洁:
use GaozhiLunarLunar;
$lunar = new Lunar();
echo $lunar->dateToLunar('2024-10-01'); // "二〇二四年八月廿八"
echo $lunar->lunarToDate('二〇二四年八月廿八'); // "2024-10-01"
当然,它也有自己的限制:
dateToLunar() 要求 Y-m-d 格式,lunarToDate() 则必须带中文数字和“年/月/日”结构preg_match 处理假如你决定自己动手封装农历转换算法,那下面这三个坑几乎是必踩的:
strtotime() 和 DateTime 默认只认识公历,传入“二〇二四年八月廿八”这种字符串会直接报错,必须先做字符串规整,再进入算法运算真正可靠的农历转换,核心从来不在代码行数多少,而在于所用天文常数和闰周规则是否与最新《农历编算规范》保持一致。别轻信“几百行搞定阴阳历”这种说法——光是 1900–2100 年间闰月分布表,就得嵌入 40 多条硬编码规则。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8