资讯动态

3行代码搞定节假日查询与老黄历:lunar-javascript 上手实践

发布时间:2026/8/22 7:54:07 来源:尧图企业网站定制
3行代码搞定节假日查询与老黄历lunar-javascript 上手实践【免费下载链接】lunar-javascript日历、公历(阳历)、农历(阴历、老黄历)、佛历、道历支持节假日、星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道黑道日及吉凶等。lunar is a calendar library for Solar and Chinese Lunar.项目地址: https://gitcode.com/gh_mirrors/lu/lunar-javascript做日程提醒或黄历类功能时你大概被这些需求折磨过公历农历怎么互转这天是节假日还是调休上班宜搬家的吉日到底怎么算lunar-javascript 是一个无第三方依赖的 JavaScript 历法库把公历阳历、农历阴历、老黄历的节假日、节气、干支生肖、每日宜忌、黄道黑道日吉凶这些计算都封装好了接进项目就能用。为什么选它 看完本节你会判断它是否适合你的场景。lunar-javascript 的核心价值有三点零依赖装完就是一个lunar.js文件Node 和浏览器script直接引都能跑覆盖面全从基础的日期转换到彭祖百忌、建除十二值星、十二神青龙名堂这类冷门字段都有现成实现算法经过长周期验证测试用例覆盖了公元前后跨越上千年的历法边界如闰月、节气交接不需要自己维护天文历数据表。五分钟跑起来lunar-javascript 安装教程本节带你完成从安装到第一次成功调用的全过程全程两条命令。npm install lunar-javascript装好后新建test.js写下第一行真正干活的代码const { Solar } require(lunar-javascript); const solar Solar.fromYmd(1986, 5, 29); console.log(solar.toFullString()); console.log(solar.getLunar().toFullString());node test.js执行第二行会输出一整串老黄历信息一九八六年四月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日……纳音、喜神财神方位、冲煞都在里面。toFullString()是调试利器一个日期对象的全部字段一览无余。核心功能精讲查询农历、节假日与黄历挑三个最高频的场景农历转换、节假日查询、黄历吉凶。每个功能给最小可运行片段看完就能照抄进项目。如何快速完成公历转农历拿到公历对象后调getLunar()就完成转换反向则是Lunar.fromYmd(年, 月, 日)后调getSolar()月参数为负数时表示前一年的闰月如-11是闰冬月const { Lunar } require(lunar-javascript); const lunar Lunar.fromYmd(2021, 12, 29); // 农历 console.log(lunar.toString()); // 二〇二一年腊月廿九 console.log(lunar.getSolar().toString()); // 对应公历 2022-01-31效果双向转换各一行代码且干支getDayInGanZhi()、生肖getYearShengXiao()等字段都挂在同一对象上不用再二次计算。节假日查询与自定义修改HolidayUtil.getHoliday()接受2020-01-01字符串或(2025, 1, 1)年、月、日三个参数内置元旦、春节、清明等主要节假日数据const { HolidayUtil } require(lunar-javascript); const holiday HolidayUtil.getHoliday(2020-01-01); console.log(holiday.getName()); // 元旦节数据想改就改fix()方法支持把某天改成别的节假日、追加自定义日期或整段删除HolidayUtil.fix(202001011120200101); // 2020-01-01 改为春节 HolidayUtil.fix(209901010120990101); // 追加 2099-01-01 为元旦节 HolidayUtil.fix(20100101~000000000000000000000000000); // 删除 2010-01-01注意fix()修改的是内存中的全局数据只存在于当前进程重启后回到初始状态。每日宜忌与黄道黑道日Lunar对象上直接挂着一整套黄历字段getDayYi()/getDayJi()返回宜、忌数组getDayJiShen()/getDayXiongSha()是吉神与凶煞列表getDayTianShen()返回当日的十二神青龙、明堂等getDayTianShenLuck()给出吉或凶的结论const { Solar } require(lunar-javascript); const lunar Solar.fromYmd(2025, 9, 16).getLunar(); console.log(lunar.getDayYi().toString()); // 宜做事项逗号分隔 console.log(lunar.getDayJi().toString()); // 忌做事项 console.log(lunar.getDayTianShen(), lunar.getDayTianShenLuck()); // 十二神 吉凶效果一行判断getDayTianShenLuck() 吉就能筛出黄道吉日配合宜忌数组即可实现择日功能无需查任何外部数据。实战小案例扫出本月适合搬家的黄道吉日需求给定某公历月份列出其中宜搬家且当日为黄道吉日的日期解决择日类应用里最常见的筛选逻辑。const { Solar } require(lunar-javascript); const year 2025, month 11; const results []; for (let day 1; day 30; day) { const lunar Solar.fromYmd(year, month, day).getLunar(); if (lunar.getDayTianShenLuck() 吉 lunar.getDayYi().toString().includes(搬家)) { results.push(${lunar.getSolar().toYmd()} ${lunar.toString()}); } } console.log(results);思路就是三行判断串起来公历逐日遍历 → 转农历对象 → 用黄历字段过滤。同一模式换个关键词就能变成宜开市宜嫁娶的查询器。常见坑与技巧 ⚠️看完这四条能避开新手最常见的报错和逻辑偏差。日期字符串要用横杠格式。HolidayUtil.getHoliday(2020-01-01)能命中20200101不行。参数也可以拆成三个整数传入内部会自动补零拼接。fix()是全局副作用。它直接改内存里的节假日表测试多个用例时会互相污染Jest 中如果断言失败先检查是否被前面用例改过数据。名称数组HolidayUtil.NAMES的下标和数据里的索引一一对应改名字时别动下标顺序。干支年有三套口径别混用。getYearInGanZhi()以春节为界getYearInGanZhiByLiChun()以立春为界getYearInGanZhiExact()按精确交节时刻算。年初这段时间三个结果可能不一致如 2020 年 2 月 4 日立春前前两者分别是庚子和己亥做命理功能时要明确口径。宜忌返回的是数组。getDayYi()得到数组后直接console.log看着没问题但拼接字符串记得toString()判断包含关系用includes()时先把数组转成逗号分隔串避免匹配到半截词。一行require接进项目农历、节假日、黄历三块能力就都齐了。想深入可以看 README.md 里的用法示例、demo.html 的页面演示核心实现 里每个字段都有注释tests/Lunar.test.js 和tests/Holiday.test.js 则是验证历法边界最好的参考资料。【免费下载链接】lunar-javascript日历、公历(阳历)、农历(阴历、老黄历)、佛历、道历支持节假日、星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道黑道日及吉凶等。lunar is a calendar library for Solar and Chinese Lunar.项目地址: https://gitcode.com/gh_mirrors/lu/lunar-javascript创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价