Ordinal date

An ordinal date is a calendar date typically consisting of a year and a day of the year ranging between 1 and 366 (starting on January 1), though year may sometimes be omitted. The two numbers can be formatted as YYYY-DDD to comply with the ISO 8601 ordinal date format.

Today's date (UTC) expressed according to ISO 8601 [refresh]
Date2020-12-03
Ordinal date2020-338

CalculationEdit

Computation of the ordinal date within a year is part of calculating the ordinal date throughout the years from a reference date, such as the Julian date. It is also part of calculating the day of the week, though for this purpose modulo-7 simplifications can be made.

For these purposes, it is convenient to count January and February as month 13 and 14 of the previous year, for two reasons: the shortness of February and its variable length. In that case, the date counted from 1 March is given by

 

which can also be written

 

or

 

with m the month number and d the date.   is the floor function.

The formula reflects the fact that any five consecutive months in the range March–January have a total length of 153 days, due to a fixed pattern 31–30–31–30–31 repeating itself twice.

"Doomsday" properties:

For   and   we get

 

giving consecutive differences of 63 (9 weeks) for n = 2, 3, 4, 5, and 6, i.e., between 4/4, 6/6, 8/8, 10/10, and 12/12.

For   and   we get

 

and with m and d interchanged

 

giving a difference of 119 (17 weeks) for n = 2 (difference between 5/9 and 9/5), and also for n = 3 (difference between 7/11 and 11/7).

The ordinal date from 1 January is:

  • for January: d
  • for February: d + 31
  • for the other months: the ordinal date from 1 March plus 59, or 60 in a leap year

or equivalently, the ordinal date from 1 March of the previous year (for which the formula above can be used) minus 306.

Modulo 7Edit

Again counting January and February as month 13 and 14 of the previous year, the date counted from 1 March is modulo 7 equal to

 

with m the month number and d the date.

Calculation can be done starting with January 1 mathematically without if statements if we take advantage of min and max algebraic logic
MAX is  
MIN is  

provided the month(m) day(d) and year(y)
  //if Jan is a full month
  //if Feb is a full month
  //if Mar is a full month
  //if Apr is a full month
  //if May is a full month
  //if June is a full month
  //if July is a full month
  //if Aug is a full month
  //if Sept is a full month
  //if Oct is a full month
  //if Nov is a full month
  //days of current month
  //leap year logic
  //only count a leap year if date is >=3rd month //leap year logic

example of Aug 24th 2016 is  

TableEdit

To the day of 13
Jan
14
Feb
3
Mar
4
Apr
5
May
6
Jun
7
Jul
8
Aug
9
Sep
10
Oct
11
Nov
12
Dec
i
Add 0 31 59 90 120 151 181 212 243 273 304 334 3
Leap years 0 31 60 91 121 152 182 213 244 274 305 335 2
Algorithm  

For example, the ordinal date of April 15 is 90 + 15 = 105 in a common year, and 91 + 15 = 106 in a leap year.

Month–dayEdit

The number of the month and date is given by

 
 

the term   can also be replaced by   with   the ordinal date.

  • Day 100 of a common year:
 
 
April 10.
  • Day 200 of a common year:
 
 
July 19.
  • Day 300 of a leap year:
 
 
November -5 = October 26 (31 - 5).

See alsoEdit

External linksEdit