节气文案配图
运营小周负责公司公众号的节气推文,每次都要临时百度「今年立秋是几号」「白露的物候特点是什么」。用本工具翻到对应月份,节气名、交节时间、三候描述直接显示在日历上,截图即得配图素材。比翻手机日历快 3 倍,且不用切屏查资料。
翻到农历十一月,想查大雪是几号,却发现手机日历只显示公历。这个工具把农历、节气、法定假日直接叠在月视图上,鼠标悬停某天就能看到当日宜忌和节日名称。所有数据在浏览器本地处理,不发送任何日期查询到服务器,关掉页面即清空。
运营小周负责公司公众号的节气推文,每次都要临时百度「今年立秋是几号」「白露的物候特点是什么」。用本工具翻到对应月份,节气名、交节时间、三候描述直接显示在日历上,截图即得配图素材。比翻手机日历快 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 年 | 多数仅支持近百年 | 仅当年或单年份 |
| 自定义标记 | 可叠加个人备注/提醒(需结合本地存储) | 通常不支持自定义 | 手写标注 |
| 平台兼容 | 任何现代浏览器,无需安装 | 需浏览器+网络 | 物理实体,无需设备 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 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 或服务端。刷新或关闭页面后,翻页位置重置为当前日期。
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公历年份,如 2025M公历月份,1–12D公历日期,1–31JDN儒略日数,整数天数计算 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°)。
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可以。本工具采用天文算法计算太阳黄经到达 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 月」(如「闰六月」),并在日历中该月表格下方插入一行,以「闰六月」标签显示。如果某年没有闰月,年份旁无标注。如果你确认某年有闰月但未显示,请检查年份是否正确,并尝试刷新页面。
目前不支持自定义颜色。周末(周六/周日)默认以浅蓝色或灰色背景区分,国家法定节假日以红色圆点或「休」字标注,调休工作日以橙色「班」字标注。颜色方案跟随系统浅色/深色模式自动切换(深色模式下周末底色变暗)。如有自定义需求,可反馈给开发者考虑后续版本支持。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。