Leap year checker

Leap year checker: whether a year has 366 days under the Gregorian rule, which test decides it, and the previous and next leap years.

Cập nhật Ví dụ đã kiểm tra: 5

Thử
Kết quả
Common year
Kết quả: Common year
Rule that decides it
Not divisible by 4
Days in the year
365
Days in February
28
Previous leap year
2024
Next leap year
2028

2026 is a common year (not divisible by 4), so February has 28 days. The previous leap year is 2024 and the next is 2028; the Gregorian rule gives 97 leap years every 400 years.

Leap years 2017–2040 shaded, 2026 outlined

201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040
Cách tính S
  1. Divisible by 4?

    2026 mod 4=22026 \bmod 4 = 2

    No year entered, so this checks the current year, 2026.

    No — a common year.

  2. Divisible by 100?

    2026 mod 100=262026 \bmod 100 = 26

    No — the century rule doesn't apply.

  3. Divisible by 400?

    2026 mod 400=262026 \bmod 400 = 26

    No.

Giới thiệu Leap year checker

Under the Gregorian rule a year is a leap year if it is divisible by 4, except century years, which are leap years only if they are also divisible by 400. The checker applies the three tests in order, reports the one that decides, and gives the days in the year and in February and the nearest leap years either side.

Century years are where the rule catches people out. 1900 was a common year because it is divisible by 100 but not by 400, while 2000 was a leap year because it is divisible by 400. The next skipped year is 2100, so the leap year after 2096 is 2104, eight years later.

The rule gives 97 leap years in every 400, an average year of 365.2425 days, about 27 seconds longer than the mean tropical year of 365.24219 days. Years before 1582 are checked with the Gregorian rule extended backwards.

Ví dụ có lời giải

2024

Năm
2024
Kết quả
Năm nhuận
Rule that decides it
Divisible by 4 but not by 100
Days in the year
366
Previous leap year
2020
Next leap year
2028

Nguồn đối chiếu: Python calendar.isleap(2024) = True

1900, a century year

Năm
1900
Kết quả
Common year
Rule that decides it
Divisible by 100 but not by 400
Days in February
28
Next leap year
1904
Previous leap year
1896

Nguồn đối chiếu: Python calendar.isleap(1900) = False (Gregorian century rule)

2000, divisible by 400

Năm
2000
Kết quả
Năm nhuận
Rule that decides it
Divisible by 400
Days in February
29

Nguồn đối chiếu: Python calendar.isleap(2000) = True

Leap years skip 2100

Năm
2096
Kết quả
Năm nhuận
Next leap year
2104
Previous leap year
2092

Nguồn đối chiếu: Python: first x > 2096 with calendar.isleap(x) is 2104

Câu hỏi

Why is 2100 not a leap year?

Because century years must be divisible by 400 to be leap years, and 2100 ÷ 400 = 5.25. February 2100 will have 28 days, and there will be no leap year between 2096 and 2104. The same rule made 1700, 1800 and 1900 common years, while 1600 and 2000 were leap years. The next century leap year is 2400.

Why do we have leap years?

The year of the seasons, the tropical year, is about 365.2422 days, so a 365-day calendar would slip by almost a day every 4 years and about 24 days a century. The Julian calendar's leap day every fourth year overcorrected by about 11 minutes a year; by 1582 the March equinox had drifted 10 days, which the Gregorian reform removed and the century rule prevents from recurring.

When was the Gregorian calendar adopted?

Pope Gregory XIII decreed it in the bull Inter gravissimas of 24 February 1582. Italy, Spain, Portugal and Poland switched that October, when 4 October was followed by 15 October. Britain and its colonies changed in September 1752, dropping 11 days; Russia in February 1918, dropping 13; and Greece in 1923, also dropping 13.

When is the next leap year?

2028. The leap years after it are 2032 and 2036, and 29 February falls on a Tuesday in 2028, a Sunday in 2032 and a Friday in 2036. Every year divisible by 4 up to 2096 is a leap year, because the first century year in that run that fails the 400 test is 2100.

“Leap year checker” chính xác đến mức nào?

Độ chính xác phụ thuộc vào dữ liệu nhập và giả định của phương pháp. Phép tính thập phân dùng 50 chữ số có nghĩa, nhưng ước lượng, phương pháp số và dữ liệu nguồn có thể kém chính xác hơn; làm tròn khi hiển thị không loại bỏ các giới hạn đó. Ví dụ có lời giải đã đối chiếu với nguồn độc lập: 5. Ví dụ, “2024” được kiểm tra bằng Python calendar.isleap(2024) = True.

Phương pháp này lấy từ đâu?

Pope Gregory XIII, Inter gravissimas (1582) — the Gregorian leap-year rule; US Naval Observatory — Leap years.

Về công cụ tính này

leap  ⟺  (y mod 4=0∧y mod 100≠0)∨y mod 400=0\text{leap} \iff (y \bmod 4 = 0 \land y \bmod 100 \ne 0) \lor y \bmod 400 = 0

Nguồn

  1. Pope Gregory XIII, Inter gravissimas (1582) — the Gregorian leap-year rule
  2. US Naval Observatory — Leap years

Đã đối chiếu nguồn tham khảo

Công cụ tính này có 5 ví dụ đã giải với đáp án từ các nguồn độc lập. Chúng được chạy trong bộ kiểm thử và bạn cũng có thể chạy tại đây.

Công cụ liên quan