公历农历转换
转换所有处理都在浏览器本地完成,数据不上传服务器
填一个公历日期(`2026-09-27`),右边给出农历日期、干支、生肖、星座与节气;带上时间(`2026-09-27 14:30`)还会给出十二时辰。也可以反过来:把「换算方向」改成农历 → 公历,输入 `2026年八月十七`。 农历不是一个公式,是一份天文历表。 哪个月是大月、哪一年有闰月,取决于朔(新月)与中气(太阳黄经是 30° 整数倍的那一刻)落在哪一天 —— 这两件事都要用高精度的天文级数去算,系数表长得没法凭记忆写对。开发时先试过自己实现,但判据是「代入几个有把握的春节日期看对不对」,而没有可靠的参照:系数一旦在某一年把闰月放错,屏幕上显示的仍是一个完全正常的农历日期,没有任何东西会露馅。所以这里用了现成的库,并且把它钉在 28 个我独立知道答案的日期上(1980–2027 的 17 个春节、6 个中秋、5 个端午,全部一致)。那份对照表就在测试里。 闰月必须写明。 `2026-08-17` 这种数字写法本身分不出是八月还是闰八月,而两者的公历日期能差一个月。所以数字写法一律按非闰月读 —— 闰月要么在汉字写法里写「闰二月」,要么把「闰月」那个勾选框打开。 十二时辰与「早子时 / 晚子时」。 时辰是把一天切成十二段,每段两小时,从 23:00 起的子时开始。麻烦的是子时跨了午夜:23:00–24:00 与 00:00–01:00 都叫子时,但在八字里前者算第二天的子时(晚子时),后者算当天的(早子时)。这个工具按钟表给时辰(23:00 就是子时),并把这条差别写在结果旁边 —— 排八字要按另一条规矩,那是另一件事。 ⚠️ 这个页面会动态载入一份农历数据(四百多 KB),只有你真的填了日期才会下载。别的工具页一个字节都不多。 全程本机计算,日期不上传。
功能
- 双向换算:公历 → 农历、农历 → 公历(农历认「八月十七」「8月17」两种写法)
- 农历日期给汉字与数字两种写法 —— 汉字是给人读的,数字是拿去计算的
- 闰月单独标注,输入时也要明确指明(数字写法分不出八月与闰八月)
- 干支的年、月、日三个都给,另给生肖与星座
- ⚠️ 星座补上符号、元素(火 / 土 / 风 / 水)与日期区间 —— 「我是狮子座」之外,用户还想要的两件事就是「它是什么元素」与「日期范围到哪天」
- ⚠️ 星座的日期区间用的是通行惯例的固定日期,不是天文边界:太阳进入每个星座的准确时刻每年差几小时,落在边界两三天上的应当以星历表为准(结果里写明了这一点)
- 带时间时给出十二时辰,并说明早子时 / 晚子时的那条差别
- 当天是节气就标出节气;是节日就标出节日
- 给出距离下一个春节还有多少天 —— 排日程时比农历日期本身更常用
- 农历数据动态载入,别的页面不受影响
- ⚠️ 农历算法钉在 28 个已知日期上(1980–2027 的春节、中秋、端午),对照表在测试里
使用方法
- 填公历日期(可带时间,如 2026-09-27 14:30)
- 右边立刻给出农历、干支、生肖、星座与节气
- 要反向换算,把「换算方向」改成农历 → 公历,输入 2026年八月十七
- 输入的若是闰月,写「闰二月」或勾上「闰月」
常见问题
- 为什么农历要用现成的库,不自己算?
- 因为农历不是一个公式。它是一份天文历表:哪个月是大月、哪一年有闰月,取决于朔(新月)与中气(太阳黄经是 30° 整数倍的那一刻)落在哪一天,而这两件事都要用高精度的天文级数去算。开发时试着自己实现过,但问题是没有可靠的参照:凭记忆写出来的系数一旦在某一年把闰月放错,页面上显示的仍是一个完全正常的农历日期 —— 不会报错,也不会看着奇怪。所以改用现成的库(MIT),并且把它钉在 28 个我独立知道答案的日期上:1980–2027 的 17 个春节、6 个中秋、5 个端午,全部一致。
- 闰月为什么要我自己指明?
- 因为数字写法本身分不出。`2026-08-17` 既可能是八月初七,也可能是闰八月初七,而两者的公历日期能差一个月。汉字写法里有「闰」字(闰二月),数字写法里没有位置放它,所以一律按非闰月读 —— 要闰月就写「闰二月」,或者把那个勾选框打开。与其猜一个(猜错的代价是一个月的日期差),不如要求写清楚。
- 子时为什么跨越午夜?23:30 到底算哪天?
- 时辰是把一天切成十二段、每段两小时,所以子时必然跨午夜(23:00–01:00),这是这套划分的固有性质。麻烦在于八字(四柱)里,23:00 之后的那一刻算作第二天的子时(晚子时),而 00:00–01:00 算当天的(早子时)。这个工具按钟表给时辰 —— 23:30 就是子时,日期仍是当天 —— 并把这条差别写在结果旁边。要排八字请按命理的那条规矩另算,两者不是一回事。
- 干支为什么与我在别处看到的不一样?
- 因为年与月的界线有不同说法。这个工具给的年干支按农历年(正月初一为界),而八字(四柱)用的是立春为界:立春之前出生的人,八字里的年干支还是上一年的。同理,月干支按节气划分,而农历的月按朔望划分,两者能差半个月。所以对照结果时先确认两边用的是哪条界线 —— 差一个字往往就是这个原因,不是算错了。
相关工具
宝宝纪念日计算
转换输入出生日期,算出百日、满月、周岁等纪念日是哪天,以及还有几天、宝宝现在几岁几个月零几天。
日期计算
转换算两个日期之间相差多少天,或给一个日期加减若干天、周、月。日期用日历挑或直接粘贴,结束日期留空就与今天比较。全部在浏览器本地完成。
时间戳转换
转换把 Unix 时间戳还原成日期时间,或反过来。秒 / 毫秒 / 微秒 / 纳秒自动识别,支持小数、负数与 Windows FILETIME。全部在浏览器本地完成。
进制转换
转换在二、八、十、十六、36、64 进制之间互转,六种结果一次全部给出,19 位的雪花 ID 也能一位不差。全部在浏览器本地完成。
Cron 解析
转换把 cron 表达式逐字段讲成人话,算出接下来几次与上一次的执行时间;永远不会触发的表达式会当场说明原因。全部在浏览器本地解析。
颜色转换
转换在 HEX、RGB、HSL、HWB、CMYK 与 OKLab、OKLCH、Lab、XYZ 之间互转,另给出色温、反色、互补色、最接近的 ANSI 终端色与 WCAG 对比度。全部在浏览器本地完成。