排 2024 年值班表,同事把 2 月按 28 天排,3 月 1 日的班直接错位一天。问他为什么,他说二月不都 28 天吗。

闰年全年有多少天,答案是 366 天,比平年多一天,多的这天就在 2 月 29 日。平年 365 天,2 月 28 天。

判断规则就三句话

公历年份能被 4 整除的,一般是闰年;能被 100 整除但不能被 400 整除的,不是;能被 400 整除的,是。

拿几个年份试:1900 年不是闰年,2000 年是,2024 年是,2025 年和 2026 年都不是,下一个闰年是 2028 年。很多人只记得四年一闰,把 1900 也算成闰年,排日期就会错。

2 月 29 日出生的人,平年按哪天过生日,各地习惯不一样,有按 2 月 28 日的,也有按 3 月 1 日的,社保和证件口径以办理部门为准。

366 天怎么分到月份

1 月 31 天,2 月 29 天,3 月 31 天,4 月 30 天,5 月 31 天,6 月 30 天,7 月 31 天,8 月 31 天,9 月 30 天,10 月 31 天,11 月 30 天,12 月 31 天。

上半年 182 天,下半年 184 天。四个季度是 91、91、92、92 天。366 除以 7 余 2,所以是 52 个星期零 2 天,闰年的 1 月 1 日是星期一,12 月 31 日就是星期二,下一年的 1 月 1 日往后错两天。

代码里别自己写除法

Java 用 Year.isLeap(2024),Python 用 calendar.isleap(2024),PHP 用 date('L', strtotime('2024-01-01')) 返回 1,JS 用 new Date(2024, 1, 29).getDate() === 29 判断。Excel 里 =DAY(DATE(2024,3,0)) 得到 29,就是闰年。

自己写 year % 4 == 0 一条判断,1900 和 2100 会算错。要么把整百年的条件补全,要么直接用标准库。

农历闰月不是一回事

农历有闰月,一年多出一个月,全年 383 天左右,闰哪个月不固定。听到闰年先问是公历还是农历,不然说的不是同一个东西。

工资按天折算时,闰年日薪会薄一点,合同写按年包干就按年,写按日结算最好注明当年实际天数。

一句话:记住 366 天、2 月 29 日、52 周零 2 天这三个数,排班和算日期够用了;写程序调库,别手写判断。