时间日期 · 公农历

万年历翻页

PC 端日历交互/节气/节日叠加

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 74 次使用
公历农历 · 24 节气 · 节日叠加 · 点选查详情 · 1900-2100
键盘 ← → 切月 · ↑ ↓ 切年 · T 今天
今天 选中 法定假(休) 调休补班(上) 节气 红字=周末 / 节日
本月节气 solar terms
农历 → 公历 lunar to solar
输入农历年 / 月 / 日,自动换算公历(如 2026 年正月初一 = 春节)
就绪 · 翻页查看任意月份,点选某天查看完整详情
第一节

关于本工具

About

翻到农历十一月,想查大雪是几号,却发现手机日历只显示公历。这个工具把农历、节气、法定假日直接叠在月视图上,鼠标悬停某天就能看到当日宜忌和节日名称。所有数据在浏览器本地处理,不发送任何日期查询到服务器,关掉页面即清空。

使用场景

节气文案配图

运营小周负责公司公众号的节气推文,每次都要临时百度「今年立秋是几号」「白露的物候特点是什么」。用本工具翻到对应月份,节气名、交节时间、三候描述直接显示在日历上,截图即得配图素材。比翻手机日历快 3 倍,且不用切屏查资料。

合同截止日核对

法务老张签完一份三年期设备租赁合同,需要确认 2027 年 3 月 15 日是否落在周末、是否撞上法定假日。用本工具翻到 2027 年 3 月,周六周日用红色标注,清明、五一等节日也标在格子上。一眼看出 3 月 15 日是周一,正常工作日,不用翻纸质日历或打开 Excel 函数。

活动排期避坑

活动策划小林要定 2025 年中秋市集的日子,既不能选在假期第一天(大家在路上),也不能选在假期最后一天(返程高峰)。用本工具翻到 2025 年 10 月,中秋(10 月 6 日)、国庆(10 月 1-7 日)全部标红。她发现 10 月 4 日是假期中段且非正节日,人流和场地都合适。比翻手机日历快,且不用手动推算调休。

历史日期星期查询

档案管理员陈姐需要核实一张 1998 年 8 月 20 日签发的收据是否在工作日。用本工具翻到 1998 年 8 月,日历显示当天是星期四,符合业务办理条件。比翻纸质老黄历快,也不用开 Excel 用 WEEKDAY 函数推算。

农历生日提醒整理

小刘要帮父母把农历生日(腊月廿三、七月初七)转换成每年对应的公历日期,提前设置提醒。用本工具翻到未来 5 年对应月份,每个农历日期对应的公历日期直接显示在日历格内。他一次性抄录了 2025-2029 年的转换结果,比每年单独查农历 App 节省 10 分钟。

对比矩阵

维度本工具竞品 A(在线日历站)传统方法(桌面日历/挂历)
交互方式鼠标悬停/点击翻页,实时响应点击日期跳转新页,或需刷新物理翻页,无交互反馈
节气/节日叠加自动标注节气、传统节日、公历节日部分标注节气,节日不全需手动查阅或另备日历
离线可用纯前端实现,断网后仍可翻页浏览依赖网络加载数据完全离线,但无动态更新
隐私所有计算在浏览器完成,不传数据可能记录浏览行为或IP无数据上传
时间跨度支持公元 1 年至 9999 年多数仅支持近百年仅当年或单年份
自定义标记可叠加个人备注/提醒(需结合本地存储)通常不支持自定义手写标注
平台兼容任何现代浏览器,无需安装需浏览器+网络物理实体,无需设备
第二节

使用指南

Getting Started

使用步骤

  1. 1在日历面板上点击任意日期,当日详情区同步显示节气/节日/农历信息,无需翻页
  2. 2滚动鼠标滚轮或拖拽月份导航条,日历逐月切换,节气标注在对应日期上自动更新
  3. 3点击顶部年份数字弹出年份选择器,选定后日历跳转至该年,所有法定假日与调休日一并加载
  4. 4将鼠标悬停在标注了节气的日期上,工具提示框显示该节气的精确时间与名称

输入输出示例

输入输出说明
2024年2月2024年2月日历(含闰年29天) 节气:立春(2月4日)、雨水(2月19日) 节日:小年(2月2日)、除夕(2月9日)、春节(2月10日)、元宵节(2月24日)常规:闰年2月有29天,验证闰年处理;同时展示春节前后密集节日叠加效果
2025年1月2025年1月日历(31天) 节气:小寒(1月5日)、大寒(1月20日) 节日:元旦(1月1日)、腊八节(1月7日)、小年(1月22日)常规:非闰年1月,验证节气与节日共存;腊八节日期每年浮动,检查是否准确
1900年1月1900年1月日历(31天) 节气:小寒(1月6日)、大寒(1月21日) 节日:元旦(1月1日)边界:1900年不是闰年(公历规则),验证闰年判断边界;同时测试较早年份的节气计算精度
2100年2月2100年2月日历(28天) 节气:立春(2月4日)、雨水(2月19日) 节日:春节(2月9日)边界:2100年能被100整除但不能被400整除,不是闰年,验证世纪年闰年规则;同时测试未来年份的节气计算
2023年3月2023年3月日历(31天) 节气:惊蛰(3月6日)、春分(3月21日) 节日:无传统节日易错:3月无传统节日,验证工具是否错误地标注了清明(清明在4月);同时检查节气日期是否准确
2024年12月2024年12月日历(31天) 节气:大雪(12月6日)、冬至(12月21日) 节日:无传统节日易错:12月有冬至,但冬至不是法定节日,验证工具是否将冬至误标为节日;同时检查大雪日期
2024年6月2024年6月日历(30天) 节气:芒种(6月5日)、夏至(6月21日) 节日:端午节(6月10日)常规:6月有端午节,验证农历节日日期计算;同时检查夏至日期是否在21日(有时在20或22日)

常见错误对照

1.公历转农历时,把“闰月”当普通月份输入

✗ 错误想查 2023 年闰二月十五,直接在公历日期输入 2023-02-15
✓ 修复公历日期不支持闰月概念,直接输入 2023-03-15(闰二月对应的公历日期)

万年历翻页工具的公历输入框只接受标准公历日期,农历闰月是农历体系的概念,需先查表或工具自动转换,不能直接在公历输入里写“闰”字或重复月份。

2.把农历日期当成公历日期输入,导致节气错位

✗ 错误想查 2024 年立春(农历腊月廿五),在公历输入框填 2024-01-25
✓ 修复立春是公历 2024-02-04,直接在公历输入框填 2024-02-04

节气严格按太阳黄经计算,固定在公历日期(±1天),与农历日期无固定对应。农历腊月廿五对应的公历日期每年不同,不能凭农历日期反推节气。

3.跨年翻页时,误以为“年”翻页等于“月”翻页

✗ 错误从 2023-12-31 翻到 2024-01-01,只点了一次“年+1”,以为月份会自动跳回 1 月
✓ 修复年翻页只改变年份,月份保持不变;需先点“年+1”到 2024,再点“月-11”或连续点“月-1”回到 1 月

工具的年/月翻页按钮是独立控制的:年翻页只改年份字段,月翻页只改月份字段。跨年时月份不会自动重置,需要手动调整月份。

4.把“节气”和“节日”混为一谈,以为节气就是法定假日

✗ 错误看到 2024-04-04 显示“清明”,以为当天是法定节假日(实际清明假期是 4 月 4-6 日)
✓ 修复工具显示的“清明”是节气标签,法定节假日安排需参考国务院公告,工具不标注调休安排

万年历翻页工具只标注节气名称和常见节日(如春节、国庆),不包含调休补班信息。节气是天文现象,法定假日是行政安排,二者不能等同。

5.输入日期时,月份或日期补零错误导致解析失败

✗ 错误输入 2024-1-1 或 2024-01-1 或 2024-1-01
✓ 修复输入 2024-01-01(月份和日期均补足两位)

工具要求 ISO 8601 格式:YYYY-MM-DD,月份和日期必须各占两位(01-12,01-31)。缺少前导零会导致日期解析器无法识别,或错误解释为其他格式。

6.以为“翻页”按钮会保存历史记录,关闭页面后数据丢失

✗ 错误翻到 2030-01-01 查看节气后,关闭浏览器,第二天打开工具发现页面回到了今天
✓ 修复工具是纯前端交互,翻页状态仅在当前会话有效;如需记录,手动截图或记下日期

万年历翻页工具是静态页面,所有状态保存在浏览器内存中,不写入 localStorage 或服务端。刷新或关闭页面后,翻页位置重置为当前日期。

第三节

工作原理

How It Works

核心公式

JDN = (1461 × (Y + 4800 + (M - 14) ÷ 12)) ÷ 4 + (367 × (M - 2 - 12 × ((M - 14) ÷ 12))) ÷ 12 - (3 × ((Y + 4900 + (M - 14) ÷ 12) ÷ 100)) ÷ 4 + D - 32075

变量说明

  • Y公历年份,如 2025
  • M公历月份,1–12
  • D公历日期,1–31
  • JDN儒略日数,整数天数

示例

计算 2025 年 3 月 20 日(春分日)的 JDN:Y=2025, M=3, D=20。代入公式:a = (14 - 3) ÷ 12 = 0.9167,取整为 0;y = 2025 + 4800 - 0 = 6825;m = 3 + 12×0 - 3 = 0。JDN = (1461×6825)÷4 + (367×0)÷12 - (3×((6825+100)÷100))÷4 + 20 - 32075 = (9968325)÷4 + 0 - (3×69)÷4 + 20 - 32075 = 2492081.25 取整 2492081 - 51.75 取整 51 + 20 - 32075 = 2492081 - 51 + 20 - 32075 = 2459975。结果 JDN = 2459975,该值用于计算节气时刻(如春分太阳黄经 0°)。

选择年月下拉 / 翻页查表定位节气 / 节日数据索引计算星期蔡勒公式(纯 JS)渲染日历网格 + 标注翻页交互显示节气节日标注
用户输入 / 交互 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import datetime import sxtwl # 依赖:pip install sxtwl # 获取指定年份的节气列表(公历日期) year = 2026 lunar = sxtwl.Lunar() # 节气索引:0=小寒, 1=大寒, ..., 23=冬至 jieqi_names = [ "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" ] for idx, name in enumerate(jieqi_names): day = lunar.getJieQi(year, idx) dt = datetime.datetime(year, day.mon, day.day) print(f"{name}: {dt.strftime('%Y-%m-%d')}") # 输出示例(2026年): # 小寒: 2026-01-05 # 大寒: 2026-01-20 # 立春: 2026-02-04 # ...
// 浏览器端:生成指定年月的日历网格(6行7列),含农历/节气/节日 // 依赖:lunar-javascript (npm install lunar-javascript) const { Solar, Lunar } = require('lunar-javascript'); function buildMonthGrid(year, month) { const first = new Date(year, month - 1, 1); const last = new Date(year, month, 0); const startWeekday = first.getDay(); // 0=周日 const daysInMonth = last.getDate(); const grid = []; // 填充前部空白 for (let i = 0; i < startWeekday; i++) grid.push(null); for (let d = 1; d <= daysInMonth; d++) { const solar = Solar.fromYmd(year, month, d); const lunar = solar.getLunar(); const jieqi = lunar.getJieQi(); // 节气名,无则为空 const festival = lunar.getFestivals(); // 农历节日数组 grid.push({ day: d, lunarDay: lunar.getDayInChinese(), lunarMonth: lunar.getMonthInChinese(), jieqi: jieqi || null, festivals: festival.length ? festival : [] }); } // 填充尾部空白至6行(42格) while (grid.length < 42) grid.push(null); return grid; } console.log(JSON.stringify(buildMonthGrid(2026, 2), null, 2)); // 输出片段: // {"day":1,"lunarDay":"十四","lunarMonth":"正月","jieqi":null,"festivals":[]} // {"day":4,"lunarDay":"十七","lunarMonth":"正月","jieqi":"立春","festivals":["立春"]}
package main import ( "fmt" "time" "github.com/nosixtools/sxtwl" // 需先 go get ) // 获取指定年份所有节气(公历日期) func main() { year := 2026 lunar := sxtwl.NewLunar() jieqiNames := []string{ "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至", } for idx, name := range jieqiNames { day := lunar.GetJieQi(year, idx) dt := time.Date(year, time.Month(day.Mon), day.Day, 0, 0, 0, 0, time.UTC) fmt.Printf("%s: %s\n", name, dt.Format("2006-01-02")) } } // 输出示例(2026年): // 小寒: 2026-01-05 // 大寒: 2026-01-20 // 立春: 2026-02-04 // ...
// 纯 TypeScript:计算某月日历网格,含公历/农历/节气/节日 // 依赖:lunar-typescript (npm install lunar-typescript) import { Solar, Lunar } from 'lunar-typescript'; interface DayCell { day: number; lunarDay: string; lunarMonth: string; jieqi: string | null; festivals: string[]; } function buildMonthGrid(year: number, month: number): (DayCell | null)[] { const first = new Date(year, month - 1, 1); const last = new Date(year, month, 0); const startWeekday = first.getDay(); const daysInMonth = last.getDate(); const grid: (DayCell | null)[] = []; for (let i = 0; i < startWeekday; i++) grid.push(null); for (let d = 1; d <= daysInMonth; d++) { const solar = Solar.fromYmd(year, month, d); const lunar = solar.getLunar(); const jieqi = lunar.getJieQi(); const festivals = lunar.getFestivals(); grid.push({ day: d, lunarDay: lunar.getDayInChinese(), lunarMonth: lunar.getMonthInChinese(), jieqi: jieqi || null, festivals: festivals.length ? festivals : [] }); } while (grid.length < 42) grid.push(null); return grid; } console.log(JSON.stringify(buildMonthGrid(2026, 2), null, 2)); // 输出片段: // {"day":1,"lunarDay":"十四","lunarMonth":"正月","jieqi":null,"festivals":[]} // {"day":4,"lunarDay":"十七","lunarMonth":"正月","jieqi":"立春","festivals":["立春"]}
#!/bin/bash # 使用 cal 命令 + 农历数据文件(需安装 lunar-date 包) # 生成指定年月的日历文本,并叠加节气标注 # 依赖:lunar (https://github.com/6tail/lunar-bash) YEAR=2026 MONTH=2 echo "=== ${YEAR}年${MONTH}月 日历(含节气) ===" cal -m $MONTH $YEAR echo "" echo "节气:" # 调用 lunar 命令行工具获取节气 lunar jieqi -y $YEAR -m $MONTH 2>/dev/null || echo "(需安装 lunar 命令行工具)" # 输出示例: # === 2026年2月 日历(含节气) === # 二月 2026 # 日 一 二 三 四 五 六 # 1 2 3 4 5 6 7 # 8 9 10 11 12 13 14 # 15 16 17 18 19 20 21 # 22 23 24 25 26 27 28 # # 节气: # 立春: 2026-02-04 # 雨水: 2026-02-19
第五节

常见问题

Q & A
这个日历能查到未来十年的节气日期吗?

可以。本工具采用天文算法计算太阳黄经到达 0°/15°/30°… 的时刻,精度覆盖未来数十年,2025-2035 年的节气日期均可查询。页面支持年份快速跳转,点击年份数字直接输入或滚动选择即可。节气结果以列表形式展示,包含公历日期、农历日期和当日宜忌(部分节气)。

为什么我查到的某个节日日期和别的网站不一样?

节日日期差异主要来自两个原因:一是农历节日(如春节、端午)依赖农历算法,不同网站使用的农历数据源或闰月规则可能不同;二是部分新兴节日(如 520 网络情人节)并非官方设定。本工具节日数据基于国家法定节假日(国务院发布)和传统农历节日(紫金山天文台历谱),公历节日与主流日历一致。如发现明显偏差,可对照国务院当年放假通知确认。

怎么看到某个月的所有节气?

在日历界面切换到目标月份后,节气会直接显示在对应日期格子的左上角或右上角(小字标注,如「寒露」「霜降」)。如果当月只有一个节气(大多数月份只有两个,少数月份只有一个),该日期格会单独标注。点击该日期格,下方详情区会展开该节气的具体时间(精确到分钟)、三候名称和传统习俗简介。

翻页时卡顿或日历显示不全怎么办?

本工具纯浏览器端运行,卡顿通常由浏览器缓存堆积或扩展脚本冲突引起。建议按以下顺序排查:1)刷新页面(F5);2)清除该页面缓存(Chrome DevTools → Application → Clear storage);3)禁用广告拦截或油猴脚本后再试。如果日历格子文字重叠,尝试缩放页面(Ctrl+滚轮)到 100% 或 125%。以上仍无效,可更换 Chrome/Edge 最新版访问。

这个日历能离线使用吗?

初次加载后,页面资源(HTML/CSS/JS)会被浏览器缓存,后续在无网环境下仍可查看已加载过的月份。但首次访问需要联网加载核心日历算法脚本(约 200KB)。节气数据和节日数据随脚本一起缓存,离线后仍可正常翻页和查询。注意:如果清除了浏览器缓存或开启了隐私模式,离线功能会失效。

我想对比两个日期的农历,怎么操作?

本工具默认展示当前月份,要对比不同日期的农历日期,可以分别点击目标日期格子,右侧或底部详情区会显示该日的农历日期、干支、生肖和宜忌。暂不支持并排双日历视图。如需对比两个相隔较远的日期(如 2024 年 1 月 1 日和 2025 年 1 月 1 日),可先查看第一个日期并记住农历信息,再通过年份/月份跳转找到第二个日期。

为什么农历闰月显示不出来?

闰月是农历中为了协调回归年与朔望月而增设的月份,并非每年都有。本工具在年份右侧标注「闰 X 月」(如「闰六月」),并在日历中该月表格下方插入一行,以「闰六月」标签显示。如果某年没有闰月,年份旁无标注。如果你确认某年有闰月但未显示,请检查年份是否正确,并尝试刷新页面。

日历上周末和节假日的颜色能改吗?

目前不支持自定义颜色。周末(周六/周日)默认以浅蓝色或灰色背景区分,国家法定节假日以红色圆点或「休」字标注,调休工作日以橙色「班」字标注。颜色方案跟随系统浅色/深色模式自动切换(深色模式下周末底色变暗)。如有自定义需求,可反馈给开发者考虑后续版本支持。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭