时间日期 · 公农历

闰年判断

任意年份/闰年表/二月天数

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 59 次使用
公历格里高利历 · 输入年份即时判定
年份 year
闰年表范围 range · 最多 200 年
判定流程 4 / 100 / 400 rule
闰年表 leap years
闰年 平年 当前年份
就绪 · 输入年份即可判定是否闰年
第一节

关于本工具

About

翻开日历核对某年2月天数,或手算某年份是否闰年,每逢闰年判断就卡在规则细节上。这个工具直接判定任意年份的闰年属性,并列出该年2月天数;内置的闰年表可快速浏览指定区间内的所有闰年。判断逻辑在浏览器本地执行,输入的年份不会离开设备。

使用场景

二月考勤天数核算

HR 小陈在排 2 月工资表时,不确定今年 2 月是 28 天还是 29 天。若按 28 天算日薪,碰上闰年 2 月有 29 个工作日,员工加班费会少算。用本工具输入当前年份,一秒确认是否闰年,直接锁定 2 月天数,避免考勤统计误差。

合同期限精确到日

法务在起草一份 5 年期租赁合同时,起租日为 2024 年 2 月 1 日,需明确 2029 年 2 月 1 日是否到期。若 2029 年不是闰年,2 月只有 28 天,合同终止日就是 2 月 1 日;若 2029 年是闰年,2 月有 29 天,则终止日不变。用本工具查 2029 年闰年状态,锁定 2 月天数,合同日期描述无歧义。

闰年表核对生日公历

一位 1960 年 2 月 29 日出生的老人,今年要办 65 岁寿宴。家人不确定 1960 年是否闰年,担心记错生日。用本工具查 1960 年闰年表,确认 2 月 29 日存在,并自动标注当年闰年状态,寿宴日期定在 2 月 29 日,无需翻万年历。

编程作业闰年判断

大一计算机系学生写「闰年判断」作业时,用 if-else 写错了整除 400 的优先级,导致 1900 年被误判为闰年。用本工具输入 1900 年,立即看到「不是闰年」的结果,对照工具给出的 2 月天数(28 天),发现自己的代码漏了世纪年规则,直接定位 bug。

对比矩阵

维度本工具在线万年历手工计算
输入方式直接输入年份数字需翻页查找或选择日期心算或查纸质历书
输出内容闰年判断 + 二月天数 + 可生成闰年表仅显示当年日历仅判断是否闰年
批量查询一次生成任意起止年份的闰年表逐页查看,无批量逐条计算,效率低
离线可用纯浏览器运行,无需网络需联网加载页面完全离线
计算依据公历闰年规则(4年/100年/400年)同公历规则依赖用户记忆或资料
适用场景快速验证、批量查询、教学演示日常看日历附带无网络或工具时应急
第二节

使用指南

Getting Started

使用步骤

  1. 1在年份输入框中键入数字(如 2000),结果区立即显示「是闰年」或「不是闰年」,无需点击按钮
  2. 2点击「闰年表」标签,页面以表格形式列出 1900–2100 年间的所有闰年,年份按升序排列
  3. 3在「二月天数」区域,输入任意年份后自动显示该年 2 月的具体天数(28 或 29),与闰年判断结果联动

输入输出示例

输入输出说明
2024是闰年(2月有29天)常规:当前最近的一个典型闰年,验证能被4整除且不被100整除的规则
1900不是闰年(2月有28天)边界:能被100整除但不能被400整除的世纪年,易被误判为闰年
2000是闰年(2月有29天)边界:能被400整除的世纪年,验证特殊规则,与1900形成对比
0不是闰年(2月有28天)边界:公元0年不存在,但工具按格里高利历规则处理为平年,验证输入容错
1582不是闰年(2月有28天)易错:格里高利历自1582年启用,此前的儒略历闰年规则不同,工具按现行历法处理
2100不是闰年(2月有28天)常规:未来世纪年,验证规则一致性,与2000对比
2025不是闰年(2月有28天)常规:非闰年普通年份,验证能被4整除的否定情况

常见错误对照

1.公元纪年与历史纪年混淆

✗ 错误输入 -44 判断公元前 44 年
✓ 修复输入 44,然后手动理解“公元前 44 年”是闰年

公历闰年规则基于公元纪年(无公元0年),公元前年份需转换为天文纪年或单独处理。本工具仅支持公元1年及以后。

2.误把世纪年当普通闰年

✗ 错误输入 1900,期望结果为闰年
✓ 修复输入 1900,结果为平年(2月28天)

格里高利历规定:世纪年必须被400整除才是闰年。1900能被4整除但不能被400整除,故为平年。

3.混淆农历闰月与公历闰年

✗ 错误查询 2023 年闰二月,认为2023年是闰年
✓ 修复2023年是公历平年(2月28天),农历闰二月是阴阳历的置闰

农历闰月是阴阳历协调回归年与朔望月的机制,与公历闰年(2月29日)完全独立。本工具只判断公历闰年。

4.输入非整数或负数年份

✗ 错误输入 2024.5 或 -100
✓ 修复输入 2024 或 1(仅正整数)

闰年判断只对整数年份有意义。分数年无实际历法对应;负数年份(公元前)需单独规则,本工具不支持。

5.误以为能被4整除就是闰年

✗ 错误输入 2100,认为闰年
✓ 修复2100是平年(世纪年规则)

格里高利历的完整规则:能被4整除且(不能被100整除或能被400整除)。2100能被100整除但不能被400整除,故排除。

6.把闰年表当作万年历

✗ 错误查询 1582 年之前年份的闰年状态
✓ 修复仅查询 1582 年及以后的年份

公历(格里高利历)1582年才颁布实施。此前儒略历规则不同(每4年一闰,无世纪年例外),本工具按格里高利规则计算。

7.输入年份超出工具支持范围

✗ 错误输入 9999999
✓ 修复输入 2024(或工具界面上标注的有效范围)

JavaScript 的 Date 对象安全范围约在 ±100,000,000 天,极值年份可能因浮点精度或浏览器实现差异导致结果异常。应使用工具提示的合法范围。

8.用二月天数反推闰年时忽略世纪年

✗ 错误认为所有能被4整除的年份二月都有29天
✓ 修复1900年二月只有28天(平年),2000年二月有29天(闰年)

二月天数与闰年一一对应,但世纪年例外:1900年能被4整除但非闰年,二月28天;2000年能被400整除,二月29天。

第三节

工作原理

How It Works

核心公式

闰年 = (year % 4 == 0 AND year % 100 != 0) OR (year % 400 == 0)

变量说明

  • year待判断的公历年份,整数
  • %取模运算符,求余数
  • AND / OR逻辑与 / 逻辑或

示例

判断 2100 年:2100 % 4 = 0(满足第一条件),但 2100 % 100 = 0(不满足第二条件),且 2100 % 400 = 300 ≠ 0(不满足第三条件),因此 2100 年不是闰年,二月只有 28 天。

输入年份整除 400?(核心判断)闰年 / 二月 29 天整除 100?(次级判断)平年 / 二月 28 天整除 4?(最终判断)闰年 / 二月 29 天
用户输入 本地判断 输出结果
第四节

开发者集成

For Developers

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

def is_leap(year: int) -> bool: """公历闰年判断:能被4整除且不能被100整除,或能被400整除""" return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) # 示例 for y in [1900, 2000, 2024, 2025]: print(f"{y}: {'闰年' if is_leap(y) else '平年'}") # 输出: 1900: 平年 2000: 闰年 2024: 闰年 2025: 平年
function isLeapYear(year) { // 格里高利历规则 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } console.log(isLeapYear(2024)); // true console.log(isLeapYear(2100)); // false
package main import "fmt" func isLeap(year int) bool { // 公历闰年:四年一闰,百年不闰,四百年再闰 return year%4 == 0 && (year%100 != 0 || year%400 == 0) } func main() { fmt.Println(isLeap(2024)) // true fmt.Println(isLeap(1900)) // false }
#!/bin/bash # 使用 date 命令判断闰年(依赖系统时区库) is_leap() { local year=$1 # 尝试构造2月29日,若失败则平年 if date -d "$year-02-29" &>/dev/null 2>&1; then echo "闰年" else echo "平年" fi } is_leap 2024 # 闰年 is_leap 2100 # 平年
public class LeapYear { public static boolean isLeap(int year) { // 使用 java.time.Year 内置方法 return java.time.Year.of(year).isLeap(); } public static void main(String[] args) { System.out.println(isLeap(2024)); // true System.out.println(isLeap(1900)); // false } }
第五节

常见问题

Q & A
1900年是不是闰年?为什么网上有的说是有的说不是?

1900年不是闰年。公历闰年规则是:能被4整除但不能被100整除,或者能被400整除。1900能被4整除,也能被100整除,但不能被400整除,所以是平年。网上部分说法可能混淆了农历闰月或不同历法,本工具严格按公历格里高利历规则计算,输入1900年即可看到结果。

我只想看2000年到2050年哪些年是闰年,能一次查出来吗?

可以。本工具的「闰年表」功能支持输入起始年份和结束年份,一键生成区间内的所有闰年列表。例如输入2000和2050,会列出2000、2004、2008……一直到2048年,省去逐个年份查询的麻烦。

查二月天数有什么用?直接看日历不就行了?

日历只能告诉你当前月,但如果你在做日期计算、排班表、项目计划或编程开发(比如计算两个日期相差天数),需要预先知道某年的二月是28天还是29天。本工具输入年份直接返回二月天数,避免你翻日历或查表,特别适合批量处理多个年份的场景。

负数年份比如公元前1年,这个工具能判断吗?

不能。本工具只处理公元1年及以后的年份,输入负数或0会提示无效。因为公历闰年规则是在公元纪年基础上定义的,公元前历法混乱(如罗马历、儒略历),没有统一的闰年标准。如果你需要判断公元前年份,建议查阅历史历法资料。

这个结果准不准?会不会跟手机日历对不上?

准。本工具采用公历格里高利历的标准闰年算法(4年一闰,百年不闰,四百年再闰),与绝大多数手机日历、操作系统日期库(如JavaScript的Date对象)一致。如果发现不一致,先检查手机日历是否误设为儒略历或农历模式。

我输入了年份,但页面没反应是怎么回事?

可能原因:1)输入框里填了非数字字符(如2024年、2024.5),本工具只接受纯整数年份;2)年份超出1-9999范围,工具对过大或过小年份会返回错误提示;3)浏览器缓存问题,可尝试刷新页面或清除缓存后重试。本工具纯前端运行,不依赖网络,排除以上情况后应该能正常使用。

这个工具需要联网吗?离线能用吗?

完全离线可用。本工具是纯前端实现,所有计算在浏览器本地完成,不会上传任何数据到服务器。即使断网,打开页面后也能正常查询任意年份的闰年判断和二月天数。

闰年判断和二月天数这两个功能,我每次都要分别操作吗?

不用。输入年份后,结果区会同时显示:该年是否为闰年、二月有多少天。两个结果一次性给出。另外还有独立的「闰年表」功能用于批量查询,三个功能都在同一页面,无需跳转。

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

选择 打开 +新窗口 esc关闭