Day of the Year Table

Dec 31 = day 365366 in a leap year - Feb 29 shifts everything after it
MonthLast day (non-leap)Last day (leap)
January3131
February5960
March9091
April120121
May151152
June181182
July212213
August243244
September273274
October304305
November334335
December365366
The table gives each month's last day-of-year; subtract to date any day inside it (June 15 = 181 - 15 = day 166, or 167 after a leap February). Astronomers, developers and the military count this way because 'day 278' sorts, diffs and broadcasts without month-name ambiguity - the same reason ISO 8601 exists. Leap years: divisible by 4, except centuries not divisible by 400 (2000 yes, 1900 no, 2100 no).
The date math family: the day-of-week calculator settles the weekday of any day number, the days between dates counts any span, the year progress calculator shows where today sits in percent, and the date format table explains why 'day 278' beats '10/05' across borders.

Strip away the month names and a year is just 365 (or 366) numbered days - and a surprising number of professions prefer it that way. The table lists each month's last day-of-year in both ordinary and leap years, so any date converts to its day number with one subtraction.

Bottom line: the arithmetic is the whole tool. June 15 sits in the month ending at day 181, so it is day 181 - 15 = 166 in an ordinary year - and everything after February shifts by one when the leap day arrives. The two column layout exists precisely because Feb 29 is the only thing that ever moves the numbering.

The honest part: nobody says 'day 278' in conversation, and the count exists for machines and logs, not small talk. Programmers use it because ordinal dates sort and diff cleanly, astronomers because their tables run on continuous counts, and the military because '278' survives a bad radio channel better than 'October the fifth' ever will.

How to use

  1. Find the month in the table and take its last-day number for the right column - ordinary or leap year.
  2. Subtract the day-of-month from that number to place any date: April 3 = 120 - 27 = day 93 in a non-leap year.
  3. Going the other way, add: day 200 lands 200 - 181 = 19 days into June in an ordinary year.
Good to know โ€” A year runs day 1 (Jan 1) to day 365 (Dec 31), or 366 after a leap February - the only discontinuity in the count. Month-end anchors, ordinary year: Jan 31, Feb 59, Mar 90, Apr 120, May 151, Jun 181, Jul 212, Aug 243, Sep 273, Oct 304, Nov 334, Dec 365. Leap years add one to every month-end from February on. Ordinal dates (2026-278) sort and diff cleanly, which is why machines prefer them.
Quick reference โ€” For the once-a-year version, the subtraction beats any app: nearest month-end minus the date, done. For anything recurring - logs, streaks, astronomy - switch to ordinal dates entirely and let the leap day be the one surprise left in your calendar math.

Frequently asked questions

What day of the year is it today?

Take today's month from the table, add the day of the month to the previous month's last-day number - or subtract the date from this month's own last day as the table note shows. In an ordinary year the year runs to day 365 on December 31; after a leap February every following date sits one number higher, ending at 366.

Which years are leap years?

Years divisible by 4 - except century years, which must be divisible by 400. So 2028 and 2032 are leap years, 2000 was one, and 1900 was not despite the 'divisible by 4' rule, which is also why 2100 will not be. The correction exists because the solar year runs about 365.2422 days; the Gregorian calendar's 97 leap days per 400 years lands the average almost exactly on it.

Why do programmers count day-of-year?

Because ordinal dates (2026-278) sort correctly as text, subtract without month-name arithmetic, and never collide across formats - the same reasons ISO 8601 orders the fields biggest-first. Log files, backup rotation and astronomy pipelines all prefer a count that increments by one, every day, with a single well-defined discontinuity per leap year instead of twelve different month lengths.

What is the military date-time group doing differently?

The military abbreviates the same instinct: '278' can appear as the Julian-date field in a date-time group because a three-digit day number is short, unambiguous over a bad radio channel, and needs no month name to survive transcription. Aviation's DDMMMYY (05OCT26) solves the same problem one way, ordinal day numbers another.

How do I convert a day number back to a date?

Find the last month whose last-day number is at or below your target, then subtract: day 200 in an ordinary year is past May (151) and into June, so 200 - 151 = June 19. In a leap year, remember every date from March onward carries the +1 - day 200 lands a day earlier in the calendar, June 18. The table's two columns exist to keep exactly that branch honest.

Related tools