Ordinal date: Difference between revisions
No edit summary Tags: Reverted Visual edit Mobile edit Mobile web edit |
added link to "julian day" in text |
||
(32 intermediate revisions by 16 users not shown) | |||
Line 2: | Line 2: | ||
{{inline|date=July 2019}} |
{{inline|date=July 2019}} |
||
{{Infobox |
{{Infobox |
||
| title = {{nobreak|Today's date ([[Coordinated Universal Time|UTC]])}} expressed according to ISO |
| title = {{nobreak|Today's date ([[Coordinated Universal Time|UTC]])}} expressed according to ISO 8601 <small>[{{purge|refresh}}]</small> |
||
| label1 = Date |
| label1 = Date |
||
| data1 = {{ISO |
| data1 = {{ISO date}} |
||
| label2 = Ordinal date |
| label2 = Ordinal date |
||
| data2 = {{ |
| data2 = {{CURRENTYEAR}}-{{padleft:{{#expr:{{#time: z}}+1}}|3}} |
||
}} |
}} |
||
[[Image:Cygnus 1 releasing seen from Mission Control (cropped) - clock board detail.jpg|thumb|upright=1.2|[[Christopher C. Kraft Jr. Mission Control Center|Mission control center]]'s board with time data, displaying [[Coordinated universal time|universal time]] with ordinal date (without year) prepended, on{{nbsp}}22nd{{nbsp}}October 2013 (i.e.{{nbsp}}2013-295)]] |
|||
An '''ordinal date''' is a |
|||
An '''ordinal date''' is a [[calendar date]] typically consisting of a ''[[year]]'' and an ''[[ordinal number]]'', ranging between 1 and 366 (starting on January 1), representing the multiples of a ''[[day]]'', called '''day of the year''' or '''ordinal day number''' (also known as '''ordinal day''' or '''day number'''). The two parts of the date can be formatted as "YYYY-DDD" to comply with the [[ISO 8601#Ordinal dates|ISO 8601 ordinal date]] format. The year may sometimes be omitted, if it is implied by the context; the day may be generalized from integers to include a [[decimal part]] representing a fraction of a day. |
|||
original 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 dates|ISO 8601 ordinal date]] format. |
|||
==Nomenclature== |
==Nomenclature== |
||
''Ordinal date'' is the preferred name for what was formerly called the ''"Julian date"'' or {{mono|JD}}, or {{mono|JDATE}}, which still seen in old programming languages and spreadsheet software. The older names are deprecated because they are easily confused with the earlier dating system called |
''Ordinal date'' is the preferred name for what was formerly called the ''"[[Julian date]]"'' or {{mono|JD}}, or {{mono|JDATE}}, which still seen in old programming languages and spreadsheet software. The older names are deprecated because they are easily confused with the earlier dating system called '[[Julian day]] number' or {{mono|JDN}}, which was in prior use and which remains ubiquitous in astronomical and some historical calculations. |
||
==Calculation== |
==Calculation== |
||
{{Original research|section|date=August 2019}} |
{{Original research |section |date=August 2019}} |
||
Computation of the ordinal |
Computation of the ordinal day within a year is part of calculating the ordinal day throughout the years from a [[Epoch (reference date)|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. |
||
In the following text, several algorithms for calculating the ordinal |
In the following text, several algorithms for calculating the ordinal day {{mvar|O}} are presented. The inputs taken are integers {{mvar|y}}, {{mvar|m}} and {{mvar|d}}, for the year, month, and day numbers of the Gregorian or Julian calendar date. |
||
=== Trivial methods === |
=== Trivial methods === |
||
The most trivial method of calculating the ordinal |
The most trivial method of calculating the ordinal day involves counting up all days that have elapsed per the definition: |
||
# Let ''O'' be 0. |
# Let ''O'' be 0. |
||
Line 30: | Line 29: | ||
# Add ''d'' to ''O''. |
# Add ''d'' to ''O''. |
||
Similarly trivial is the use of a lookup table, such as the one referenced.<ref>{{cite web |url=https://www.atmos.anl.gov/ANLMET/OrdinalDay.txt |title= |
Similarly trivial is the use of a lookup table, such as the one referenced.<ref>{{cite web |url=https://www.atmos.anl.gov/ANLMET/OrdinalDay.txt |title=Table of ordinal day number for various calendar dates. |access-date=2021-04-08}}</ref> |
||
=== Zeller-like === |
=== Zeller-like === |
||
The table of month lengths can be replaced following the method of encoding the month-length variation in [[Zeller's congruence]]. As in Zeller, the {{mvar|m}} is changed to {{math|''m'' + 12}} if {{math| ''m'' ≤ 2}}. It can be shown (see below) that for a month-number {{mvar|m}}, the total days of the preceding months is equal to {{math|⌊(153 * (''m'' − 3) + 2) / 5⌋}}. As a result, the March 1-based ordinal |
The table of month lengths can be replaced following the method of encoding the month-length variation in [[Zeller's congruence]]. As in Zeller, the {{mvar|m}} is changed to {{math|''m'' + 12}} if {{math| ''m'' ≤ 2}}. It can be shown (see below) that for a month-number {{mvar|m}}, the total days of the preceding months is equal to {{math|⌊(153 * (''m'' − 3) + 2) / 5⌋}}. As a result, the March 1-based ordinal day number is {{math|1=''O''<sub>Mar</sub> = ⌊(153 × (''m'' − 3) + 2) / 5⌋ + ''d''}}. |
||
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. This is similar to encoding of the month offset (which would be the same sequence modulo 7) in |
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. This is similar to encoding of the month offset (which would be the same sequence modulo 7) in Zeller's congruence. As {{sfrac|153|5}} is 30.6, the sequence oscillates in the desired pattern with the desired period 5. |
||
To go from the March 1 based ordinal |
To go from the March 1 based ordinal day to a January 1 based ordinal day: |
||
* For {{math|''m'' ≤ 12}} (March through December), {{nowrap|{{math| ''O'' {{=}} ''O''<sub>Mar</sub> + 59 + isLeap(''y'')}} ,}} where {{math|isLeap}} is a function returning 0 or 1 depending whether the input is a leap year. |
* For {{math|''m'' ≤ 12}} (March through December), {{nowrap|{{math| ''O'' {{=}} ''O''<sub>Mar</sub> + 59 + isLeap(''y'')}} ,}} where {{math|isLeap}} is a function returning 0 or 1 depending whether the input is a leap year. |
||
* For January and February, two methods can be used: |
* For January and February, two methods can be used: |
||
Line 43: | Line 42: | ||
*# The less redundant method is to use {{math| ''O'' {{=}} ''O''<sub>Mar</sub> − 306}}, where 306 is the number of dates in March through December. This makes use of the fact that the formula correctly gives a month-length of 31 for January. |
*# The less redundant method is to use {{math| ''O'' {{=}} ''O''<sub>Mar</sub> − 306}}, where 306 is the number of dates in March through December. This makes use of the fact that the formula correctly gives a month-length of 31 for January. |
||
"[[Doomsday |
"[[Doomsday rule|Doomsday]]" properties: |
||
With <math>m = 2n</math> and <math>d=m</math> gives |
|||
:<math>O = \left \lfloor 63.2 n - 91.4 \right \rfloor</math> |
:<math>O = \left \lfloor 63.2 n - 91.4 \right \rfloor</math> |
||
giving consecutive differences of 63 (9 weeks) for {{nowrap|{{mvar|n}} {{=}} 2,}} 3, 4, 5, and 6, i.e., between 4/4, 6/6, 8/8, 10/10, and 12/12. |
giving consecutive differences of 63 (9 weeks) for {{nowrap|{{mvar|n}} {{=}} 2,}} 3, 4, 5, and 6, i.e., between 4/4, 6/6, 8/8, 10/10, and 12/12. |
||
<math>m = 2n + 1</math> and <math>d = m + 4</math> gives |
|||
:<math>O = \left \lfloor 63.2 n - 56+0.2 \right \rfloor</math> |
:<math>O = \left \lfloor 63.2 n - 56+0.2 \right \rfloor</math> |
||
and with ''m'' and ''d'' interchanged |
and with ''m'' and ''d'' interchanged |
||
Line 77: | Line 76: | ||
{{original research|section|date=August 2019}} |
{{original research|section|date=August 2019}} |
||
The number of the month and date is given by |
The number of the month and date is given by |
||
:<math>m = \left \lfloor od/30 \right \rfloor + 1</math |
:<math>m = \left \lfloor od/30 \right \rfloor + 1</math> |
||
:<math>d = |
:<math>d = \bmod\!\! (od, 30) + i - \left \lfloor 0.6 (m + 1) \right \rfloor</math> |
||
the term <math> |
the term <math>\bmod\!\! (od, 30)</math> can also be replaced by <math>od - 30 (m - 1)</math> with <math>od</math> the ordinal date. |
||
*Day 100 of a common year: |
*Day 100 of a common year: |
||
::<math>m = \left \lfloor 100/30 \right \rfloor + 1 = 4</math> |
::<math>m = \left \lfloor 100/30 \right \rfloor + 1 = 4</math> |
||
::<math>d = |
::<math>d = \bmod\!\! (100, 30) + 3 - \left \lfloor 0.6 (4 + 1) \right \rfloor = 10 + 3 - 3 = 10</math> |
||
:April 10. |
:April 10. |
||
*Day 200 of a common year: |
*Day 200 of a common year: |
||
::<math>m = \left \lfloor 200/30 \right \rfloor + 1 = 7</math> |
::<math>m = \left \lfloor 200/30 \right \rfloor + 1 = 7</math> |
||
::<math>d = |
::<math>d = \bmod\!\! (200, 30) + 3 - \left \lfloor 0.6 (7 + 1) \right \rfloor = 20 + 3 - 4 = 19</math> |
||
:July 19. |
:July 19. |
||
*Day 300 of a leap year: |
*Day 300 of a leap year: |
||
::<math>m = \left \lfloor 300/30 \right \rfloor + 1 = 11</math> |
::<math>m = \left \lfloor 300/30 \right \rfloor + 1 = 11</math> |
||
::<math>d = |
::<math>d = \bmod\!\! (300, 30) + 2 - \left \lfloor 0.6 (11 + 1)\right \rfloor = 0 + 2 - 7 = - 5</math> |
||
:November - 5 = October 26 (31 - 5). |
:November - 5 = October 26 (31 - 5). |
||
== Helper conversion table == |
|||
{| class="wikitable" style="float:left" |
|||
! ord. <br/> date !! common <br/> year !! leap <br/> year |
|||
|- |
|||
| 001 || colspan=2 | {{0}}'''1 Jan''' |
|||
|- |
|||
| '''010''' || colspan=2 | 10 Jan |
|||
|- |
|||
| '''020''' || colspan=2 | 20 Jan |
|||
|- |
|||
| '''030''' || colspan=2 | 30 Jan |
|||
|- |
|||
| 032 || colspan=2 | {{0}}'''1 Feb''' |
|||
|- |
|||
| '''040''' || colspan=2 | {{0}}9 Feb |
|||
|- |
|||
| '''050''' || colspan=2 | 19 Feb |
|||
|- |
|||
| '''060''' || {{0}}'''1 Mar''' || 29 Feb |
|||
|- |
|||
| 061 || {{0}}2 Mar || {{0}}'''1 Mar''' |
|||
|- |
|||
| '''070''' || 11 Mar || 10 Mar |
|||
|- |
|||
| '''080''' || 21 Mar || 20 Mar |
|||
|- |
|||
| '''090''' || 31 Mar || 30 Mar |
|||
|- |
|||
| 091 || {{0}}'''1 Apr''' || 31 Mar |
|||
|- |
|||
| 092 || {{0}}2 Apr || {{0}}'''1 Apr''' |
|||
|- |
|||
| '''100''' || 10 Apr || {{0}}9 Apr |
|||
|} |
|||
{| class="wikitable" style="float:left" |
|||
! ord. <br/> date !! comm. <br/> year !! leap <br/> year |
|||
|- |
|||
| '''110''' || 20 Apr || 19 Apr |
|||
|- |
|||
| '''120''' || 30 Apr || 29 Apr |
|||
|- |
|||
| 121 || {{0}}'''1 May''' || 30 Apr |
|||
|- |
|||
| 122 || {{0}}2 May || {{0}}'''1 May''' |
|||
|- |
|||
| '''130''' || 10 May || {{0}}9 May |
|||
|- |
|||
| '''140''' || 20 May || 19 May |
|||
|- |
|||
| '''150''' || 30 May || 29 May |
|||
|- |
|||
| 152 || {{0}}'''1 Jun''' || 31 May |
|||
|- |
|||
| 153 || {{0}}2 Jun || {{0}}'''1 Jun''' |
|||
|- |
|||
| '''160''' || {{0}}9 Jun || {{0}}8 Jun |
|||
|- |
|||
| '''170''' || 19 Jun || 18 Jun |
|||
|- |
|||
| '''180''' || 29 Jun || 28 Jun |
|||
|- |
|||
| 182 || {{0}}'''1 Jul''' || 30 Jun |
|||
|- |
|||
| 183 || {{0}}2 Jul || {{0}}'''1 Jul''' |
|||
|- |
|||
| '''190''' || {{0}}9 Jul || {{0}}8 Jul |
|||
|} |
|||
{| class="wikitable" style="float:left" |
|||
! ord. <br/> date !! comm. <br/> year !! leap <br/> year |
|||
|- |
|||
| '''200''' || 19 Jul || 18 Jul |
|||
|- |
|||
| '''210''' || 29 Jul || 28 Jul |
|||
|- |
|||
| 213 || {{0}}'''1 Aug''' || 31 Jul |
|||
|- |
|||
| 214 || {{0}}2 Aug || {{0}}'''1 Aug''' |
|||
|- |
|||
| '''220''' || {{0}}8 Aug || {{0}}7 Aug |
|||
|- |
|||
| '''230''' || 18 Aug || 17 Aug |
|||
|- |
|||
| '''240''' || 28 Aug || 27 Aug |
|||
|- |
|||
| 244 || {{0}}'''1 Sep''' || 31 Aug |
|||
|- |
|||
| 245 || {{0}}2 Sep || {{0}}'''1 Sep''' |
|||
|- |
|||
| '''250''' || {{0}}7 Sep || {{0}}6 Sep |
|||
|- |
|||
| '''260''' || 17 Sep || 16 Sep |
|||
|- |
|||
| '''270''' || 27 Sep || 26 Sep |
|||
|- |
|||
| 274 || {{0}}'''1 Oct''' || 30 Sep |
|||
|- |
|||
| 275 || {{0}}2 Oct || {{0}}'''1 Oct''' |
|||
|- |
|||
| '''280''' || {{0}}7 Oct || {{0}}6 Oct |
|||
|} |
|||
{| class="wikitable" style="float:left" |
|||
! ord. <br/> date !! comm. <br/> year !! leap <br/> year |
|||
|- |
|||
| '''290''' || 17 Oct || 16 Oct |
|||
|- |
|||
| '''300''' || 27 Oct || 26 Oct |
|||
|- |
|||
| 305 || {{0}}'''1 Nov''' || 31 Oct |
|||
|- |
|||
| 306 || {{0}}2 Nov || {{0}}'''1 Nov''' |
|||
|- |
|||
| '''310''' || {{0}}6 Nov || {{0}}5 Nov |
|||
|- |
|||
| '''320''' || 16 Nov || 15 Nov |
|||
|- |
|||
| '''330''' || 26 Nov || 25 Nov |
|||
|- |
|||
| 335 || {{0}}'''1 Dec''' || 30 Nov |
|||
|- |
|||
| 336 || {{0}}2 Dec || {{0}}'''1 Dec''' |
|||
|- |
|||
| '''340''' || {{0}}6 Dec || {{0}}5 Dec |
|||
|- |
|||
| '''350''' || 16 Dec || 15 Dec |
|||
|- |
|||
| '''360''' || 26 Dec || 25 Dec |
|||
|- |
|||
| 365 || 31 Dec || 30 Dec |
|||
|- |
|||
| 366 || {{N/A}} || 31 Dec |
|||
|} |
|||
{{-}} |
|||
==See also== |
==See also== |
||
Line 101: | Line 237: | ||
==References== |
==References== |
||
{{Reflist}} |
{{Reflist}} |
||
==External links== |
|||
* {{cite web |url=https://catalog.hathitrust.org/Record/011394870 |title=Representation for calendar date and ordinal date for information interchange |series=Federal Information Processing Standards Publication |volume=4-1 |date=27 January 1988 |publisher=[[National Institute of Standards and Technology]] |via=hathitrust.org}} |
|||
{{DEFAULTSORT:Ordinal Date}} |
{{DEFAULTSORT:Ordinal Date}} |
||
[[Category:Calendars]] |
[[Category:Calendars]] |
||
[[Category:Ordinal numbers]] |
Latest revision as of 12:50, 27 March 2024
This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. (July 2019) |
Date | 2024-09-05 |
---|---|
Ordinal date | 2024-249 |
An ordinal date is a calendar date typically consisting of a year and an ordinal number, ranging between 1 and 366 (starting on January 1), representing the multiples of a day, called day of the year or ordinal day number (also known as ordinal day or day number). The two parts of the date can be formatted as "YYYY-DDD" to comply with the ISO 8601 ordinal date format. The year may sometimes be omitted, if it is implied by the context; the day may be generalized from integers to include a decimal part representing a fraction of a day.
Nomenclature
[edit]Ordinal date is the preferred name for what was formerly called the "Julian date" or JD, or JDATE, which still seen in old programming languages and spreadsheet software. The older names are deprecated because they are easily confused with the earlier dating system called 'Julian day number' or JDN, which was in prior use and which remains ubiquitous in astronomical and some historical calculations.
Calculation
[edit]This section possibly contains original research. (August 2019) |
Computation of the ordinal day within a year is part of calculating the ordinal day 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.
In the following text, several algorithms for calculating the ordinal day O are presented. The inputs taken are integers y, m and d, for the year, month, and day numbers of the Gregorian or Julian calendar date.
Trivial methods
[edit]The most trivial method of calculating the ordinal day involves counting up all days that have elapsed per the definition:
- Let O be 0.
- From i = 1 .. m - 1, add the length of month i to O, taking care of leap year according to the calendar used.
- Add d to O.
Similarly trivial is the use of a lookup table, such as the one referenced.[1]
Zeller-like
[edit]The table of month lengths can be replaced following the method of encoding the month-length variation in Zeller's congruence. As in Zeller, the m is changed to m + 12 if m ≤ 2. It can be shown (see below) that for a month-number m, the total days of the preceding months is equal to ⌊(153 * (m − 3) + 2) / 5⌋. As a result, the March 1-based ordinal day number is OMar = ⌊(153 × (m − 3) + 2) / 5⌋ + d.
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. This is similar to encoding of the month offset (which would be the same sequence modulo 7) in Zeller's congruence. As 153/5 is 30.6, the sequence oscillates in the desired pattern with the desired period 5.
To go from the March 1 based ordinal day to a January 1 based ordinal day:
- For m ≤ 12 (March through December), O = OMar + 59 + isLeap(y) , where isLeap is a function returning 0 or 1 depending whether the input is a leap year.
- For January and February, two methods can be used:
- The trivial method is to skip the calculation of OMar and go straight for O = d for January and O = d + 31 for February.
- The less redundant method is to use O = OMar − 306, where 306 is the number of dates in March through December. This makes use of the fact that the formula correctly gives a month-length of 31 for January.
"Doomsday" properties:
With and gives
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.
and gives
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).
Table
[edit]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–day
[edit]This section possibly contains original research. (August 2019) |
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).
Helper conversion table
[edit]ord. date |
common year |
leap year |
---|---|---|
001 | 1 Jan | |
010 | 10 Jan | |
020 | 20 Jan | |
030 | 30 Jan | |
032 | 1 Feb | |
040 | 9 Feb | |
050 | 19 Feb | |
060 | 1 Mar | 29 Feb |
061 | 2 Mar | 1 Mar |
070 | 11 Mar | 10 Mar |
080 | 21 Mar | 20 Mar |
090 | 31 Mar | 30 Mar |
091 | 1 Apr | 31 Mar |
092 | 2 Apr | 1 Apr |
100 | 10 Apr | 9 Apr |
ord. date |
comm. year |
leap year |
---|---|---|
110 | 20 Apr | 19 Apr |
120 | 30 Apr | 29 Apr |
121 | 1 May | 30 Apr |
122 | 2 May | 1 May |
130 | 10 May | 9 May |
140 | 20 May | 19 May |
150 | 30 May | 29 May |
152 | 1 Jun | 31 May |
153 | 2 Jun | 1 Jun |
160 | 9 Jun | 8 Jun |
170 | 19 Jun | 18 Jun |
180 | 29 Jun | 28 Jun |
182 | 1 Jul | 30 Jun |
183 | 2 Jul | 1 Jul |
190 | 9 Jul | 8 Jul |
ord. date |
comm. year |
leap year |
---|---|---|
200 | 19 Jul | 18 Jul |
210 | 29 Jul | 28 Jul |
213 | 1 Aug | 31 Jul |
214 | 2 Aug | 1 Aug |
220 | 8 Aug | 7 Aug |
230 | 18 Aug | 17 Aug |
240 | 28 Aug | 27 Aug |
244 | 1 Sep | 31 Aug |
245 | 2 Sep | 1 Sep |
250 | 7 Sep | 6 Sep |
260 | 17 Sep | 16 Sep |
270 | 27 Sep | 26 Sep |
274 | 1 Oct | 30 Sep |
275 | 2 Oct | 1 Oct |
280 | 7 Oct | 6 Oct |
ord. date |
comm. year |
leap year |
---|---|---|
290 | 17 Oct | 16 Oct |
300 | 27 Oct | 26 Oct |
305 | 1 Nov | 31 Oct |
306 | 2 Nov | 1 Nov |
310 | 6 Nov | 5 Nov |
320 | 16 Nov | 15 Nov |
330 | 26 Nov | 25 Nov |
335 | 1 Dec | 30 Nov |
336 | 2 Dec | 1 Dec |
340 | 6 Dec | 5 Dec |
350 | 16 Dec | 15 Dec |
360 | 26 Dec | 25 Dec |
365 | 31 Dec | 30 Dec |
366 | — | 31 Dec |
See also
[edit]References
[edit]- ^ "Table of ordinal day number for various calendar dates". Retrieved 2021-04-08.