万年历 · 1900-2100
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
|---|
PC 端日历交互/节气/节日叠加
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
|---|
日期标记:右上角红点 = 法定节假日 / 金点 = 调休补班 / 红色数字 = 周末
键盘导航:← → 切月 · ↑ ↓ 切年 · T 回到今天 · Enter 选中日期跳转详情
点击日期:右侧详情面板显示完整农历 / 干支 / 生肖 / 星座 / 节气倒计时 / 距今天数
范围:公历 1900-2100,农历 1900-2099(涵盖大多数日常查询场景)
了解工具定位 · 使用场景 · 对比优势
PC 端日历翻页工具,支持鼠标滚轮逐月浏览、快速跳转到任意年月,并自动叠加二十四节气与公历、农历节日。适合需要频繁查阅节气日期、规划节日排期的办公场景。页面交互完全在浏览器本地完成,无需上传任何数据。
中医养生爱好者需要根据二十四节气调整饮食作息,但传统日历上的节气日期常被忽略。本工具以翻页日历形式清晰标注每个节气的公历日期与时辰,点击节气名称可直接查看该节气的气候特点与养生建议,帮助用户提前准备当季食谱与作息调整,不再错过立春养肝、冬至进补等关键节点。
中小学语文教师在讲授《二十四节气歌》或《传统节日》单元时,需要向学生展示节气与节日的具体日期及由来。本工具提供交互式日历,教师可快速翻查到任意年份的节气时刻与法定节假日,并查看节日简介,便于在课堂上结合真实日期讲解习俗,增强学生对时间与文化的直观理解。
企业行政在安排年会、团建或培训日期时,需要避开法定节假日与调休日,以免与员工休假冲突。本工具以翻页形式一目了然地展示全年节假日与调休安排,行政人员可快速定位非假期的工作日,结合节气变化(如避开霜降前后易感冒时段)选择最佳活动日期,提高出勤率与参与体验。
种植户或农场管理者需要根据节气安排播种、施肥与收割,但传统农历日期与公历对应关系复杂。本工具将二十四节气与公历日期并列展示,用户翻到对应月份即可看到该月包含的节气名称与具体日期,例如“芒种”前后适合播种水稻,“霜降”后需防冻害,帮助农事决策更精准。
自由职业者或远程工作者常因缺乏固定作息而模糊时间感知,需要借助节气与节日作为时间锚点来规划长期任务。本工具提供简洁的翻页日历,用户可快速查看未来三个月内的节气与节日,例如在“清明”前完成春季项目总结、“立秋”后启动秋冬计划,让时间管理有自然节奏可依。
| 维度 | 本工具(万年历翻页) | 竞品 A(中华万年历网页版) | 传统方法(纸质日历/挂历) |
|---|---|---|---|
| 数据隐私 | 纯浏览器端运行,无数据上传 | 需联网加载,部分功能可能上传数据 | 完全离线,无电子数据 |
| 处理速度 | 点击即切换,毫秒级响应 | 受网络影响,切换需 1-3 秒加载 | 手动翻页,速度取决于操作者 |
| 离线可用 | 完全离线(单页应用,加载后无需网络) | 需保持网络连接 | 完全离线 |
| 功能范围 | 仅万年历翻页、节气、节日展示 | 包含万年历、黄历、吉日查询、天气等综合功能 | 仅显示日期、节气、节日,无交互 |
| 交互体验 | 鼠标拖拽/滚轮翻页,流畅动画 | 点击按钮翻页,页面有广告干扰 | 物理翻页,无动画 |
| 平台依赖 | 任何现代浏览器(PC/移动端) | 浏览器,但部分功能需 App | 需要纸质载体 |
| 成本 | 免费,无广告 | 免费,含广告 | 需购买纸质日历,成本几元到几十元不等 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 2026-02-18 | 2026年2月18日 星期三 农历正月初二 雨水 | 典型场景:查看某日节气叠加农历日期 |
| 2025-01-29 | 2025年1月29日 星期三 农历正月初一 春节 | 典型场景:查看法定节日(春节) |
| 2024-02-29 | 2024年2月29日 星期四 农历正月二十 无节日 | 边界 case:闰年2月29日,检查闰日是否正常显示 |
| 1900-02-01 | 1900年2月1日 星期四 农历正月初二 无节日 | 边界 case:1900年非闰年(公历规则),验证农历兼容性 |
| 2025-01-01 | 2025年1月1日 星期三 农历腊月初二 元旦 | 易错 case:元旦是公历节日,与农历腊月并存 |
| 2025-06-21 | 2025年6月21日 星期六 农历五月廿六 夏至 | 典型场景:夏至节气,白昼最长的一天 |
| 2025-10-01 | 2025年10月1日 星期三 农历八月初十 国庆节 | 易错 case:国庆节固定公历日期,农历日期每年不同 |
在日期选择器里选了「2024-01-01」以为是大年初一确认所选日期是公历 2024-01-01(元旦),农历正月初一对应公历 2024-02-10日历工具默认使用公历(格里历)日期选择器;农历日期需通过翻页或节气标注辅助判断,不能直接按数字对应。
认为「清明」永远是 4 月 5 日,翻到 2025 年 4 月 5 日找清明查看工具节气标注:2025 年清明在 4 月 4 日;2026 年在 4 月 5 日节气基于太阳黄经 0°/15°/… 精确计算,公历日期每年浮动 ±1 天;工具已自动标注,不需要用户记忆固定日期。
翻到公历 2023 年 3 月,问「怎么没有闰二月?」翻到公历 2023 年 3 月 22 日之后,看到农历显示「闰二月初一」闰月是农历概念,公历月份不包含闰月;工具在农历区域标注「闰X月」,公历月份翻页不会单独显示一个「闰月」。
看到某日「忌:出行」,认为那天绝对不能出门理解黄历「忌」为传统择日参考,非强制禁令;工具仅展示历法数据,不提供吉凶解读黄历「宜/忌」来自《协纪辨方书》等通书,是民间择日习俗,不同版本有差异;工具展示原始数据,不替代个人判断。
从 2024 年 12 月连续翻到下一年,以为会自动跳到 2025 年 1 月翻到 2024 年 12 月后,点击年份切换按钮或手动输入 2025-01部分日历翻页控件逐月翻动时只改变月份,年份不会自动进位;需显式修改年份或使用「跳转至」功能。
看到农历「初七」以为是星期一星期看公历区域顶部的「一/二/三…」或「Mon/Tue…」;农历日期看「正月/二月…初X」星期是公历 7 天周期,农历日以朔望月为周期;两者无固定对应关系,工具在界面不同区域分别展示。
公式推导 · 流程图解 · 依据出处
JD = 367×Y - INT(7×(Y+INT((M+9)/12))/4) + INT(275×M/9) + D + 1721013.5 + UT/24
JD — 儒略日数(Julian Day Number)Y — 公历年份(整数)M — 公历月份(1-12)D — 公历日期的日部分(含小数)UT — 世界时(小时,0-24)计算 2024 年 3 月 20 日 4:06(春分时刻)的儒略日。Y=2024,M=3,D=20+6/60=20.1,UT=4.1。JD = 367×2024 - INT(7×(2024+INT((3+9)/12))/4) + INT(275×3/9) + 20.1 + 1721013.5 + 4.1/24 = 742,808 - INT(7×(2024+1)/4) + INT(825/9) + 20.1 + 1721013.5 + 0.1708 = 742,808 - 3,543 + 91 + 20.1 + 1,721,013.5 + 0.1708 = 2,460,389.7708。该 JD 值用于计算太阳黄经达 0° 的时刻,即春分节气。
适用于公历日期(格里历)与儒略日之间的精确转换。不适用于公元前 4713 年之前的日期(超出儒略日定义范围)。公式来源:美国天文历算局(USNO)《天文年鉴》标准算法。
3 种主流语言 · 复制即用
from datetime import datetime, timedelta
from typing import Optional
import math
# 计算指定年份的二十四节气近似日期(基于太阳黄经公式)
# 精度 ±1 天,适用于公历 1900-2100 年
def solar_term(year: int, term_index: int) -> Optional[datetime]:
"""
term_index: 0=小寒, 1=大寒, ..., 23=冬至
返回近似日期(UTC+8)
"""
# 1900 年小寒的儒略日基准(近似)
base_jd = 2415020.0
# 每个节气约 15.2184 天
jd = base_jd + (year - 1900) * 365.2422 + term_index * 15.2184
# 儒略日转公历(简化,忽略闰秒)
jd_int = int(jd + 0.5)
a = jd_int + 32044
b = (4 * a + 3) // 146097
c = a - (146097 * b) // 4
d = (4 * c + 3) // 1461
e = c - (1461 * d) // 4
m = (5 * e + 2) // 153
day = e - (153 * m + 2) // 5 + 1
month = m + 3 if m < 10 else m - 9
year_out = 100 * b + d - 4800 + (month <= 2)
try:
return datetime(year_out, month, day, 12, 0, 0)
except ValueError:
return None
# 示例:打印 2025 年所有节气
terms = ["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
for i, name in enumerate(terms):
dt = solar_term(2025, i)
if dt:
print(f"{name}: {dt.strftime('%Y-%m-%d')}")
package main
import (
"fmt"
"time"
)
// 计算某年某月第一天是星期几(Zeller 公式)
// 用于生成月历布局
func firstWeekday(year, month int) time.Weekday {
if month <= 2 {
month += 12
year--
}
c := year / 100
y := year % 100
w := (1 + (13*(month+1))/5 + y + y/4 + c/4 - 2*c) % 7
// 转换为 Go 的 Sunday=0 格式
return time.Weekday((w + 6) % 7)
}
func main() {
year := 2025
month := 2 // 二月
daysInMonth := time.Date(year, time.Month(month+1), 0, 0, 0, 0, 0, time.UTC).Day()
start := firstWeekday(year, month)
fmt.Printf("%d年%d月\n", year, month)
fmt.Println("日 一 二 三 四 五 六")
// 打印前导空格
for i := 0; i < int(start); i++ {
fmt.Print(" ")
}
for d := 1; d <= daysInMonth; d++ {
fmt.Printf("%2d ", d)
if (int(start)+d)%7 == 0 {
fmt.Println()
}
}
fmt.Println()
}
// 判断公历节日(固定日期)与农历节日(近似)
// 用于前端日历标注
const FIXED_HOLIDAYS = {
'01-01': '元旦',
'05-01': '劳动节',
'10-01': '国庆节',
};
// 农历节日近似日期(2025 年示例,实际需查表或调用 API)
const LUNAR_HOLIDAYS_2025 = {
'2025-01-29': '春节',
'2025-02-12': '元宵节',
'2025-06-01': '端午节',
'2025-10-06': '中秋节',
};
function getHolidays(dateStr) {
// dateStr 格式 'YYYY-MM-DD'
const monthDay = dateStr.slice(5); // 'MM-DD'
const holidays = [];
if (FIXED_HOLIDAYS[monthDay]) {
holidays.push(FIXED_HOLIDAYS[monthDay]);
}
if (LUNAR_HOLIDAYS_2025[dateStr]) {
holidays.push(LUNAR_HOLIDAYS_2025[dateStr]);
}
return holidays;
}
// 示例
console.log(getHolidays('2025-01-29')); // ['春节']
console.log(getHolidays('2025-05-01')); // ['劳动节']
console.log(getHolidays('2025-10-01')); // ['国庆节']
console.log(getHolidays('2025-10-06')); // ['中秋节']
8 个高频疑问