Content uploaded by Peter Baum
Author content
All content in this area was uploaded by Peter Baum on Nov 06, 2022
Content may be subject to copyright.
Content uploaded by Peter Baum
Author content
All content in this area was uploaded by Peter Baum on Oct 21, 2020
Content may be subject to copyright.
164
Date Algorithms
! "#$#%#&'(# $))
!*
$#""* +#,!
'" -,!-
."%,!/
(""*0""%
.$("#%$")
Table of Contents
)1"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-
)2#""3))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)45#"5#36%))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
)45#"5#36%# 3$#+))))))))))))))))))))))))))))))))))))))))))))))))))7
)5#36%# 8)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))435#3%))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))5#35#3%)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)-4"5#36%1+#))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)-))2 %"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)-))6)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)-)435#36%1+#9:+#))))))))))))))))))))))))))))))))))))))))))))))))))))))
)-)5#"5#36%1+#9:+#))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
-)5#36%4")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
-)# 3$#+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
-))2 3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
-))3 ;)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
-)))$"+++:)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
-)))$"+++:))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)))-3+/++:))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)))/++#"/++:" )))))))))))))))))))))))))))))))))
-)))#$++# " ))))))))))))))))))))))))))))))))))))))))))))))))))))))))
264
-))-3 3 ;))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-))/3 )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-))3 3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)5#36%5#3# 3$#+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-))2 3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-))3 ;)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-
-))-3 "3))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
-)-5#36%5#"43# 8))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
-)-)5#3%43))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
-)-)5#3%5#3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)/5#36%4"5#31+#)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)/)2 "6))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)/))2 %"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)/))6)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-)/)5#36%431+#9:+#))))))))))))))))))))))))))))))))))))))))))))))))))))))-
-)/)-5#36%5#"1+#9:+#)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-/
-)/)/1"#3# )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-
-)/)/)#5#36%4"# ))))))))))))))))))))))))))))))))))))))))))))))))))))))-
-)/)/)<.12'5#36%4"+#)))))))))))))))))))))-
/)""5#3))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)3# ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)31+#9:+#))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-
7)1$3))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))//
7)1$3# )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))//
7)1$31+#9:+#)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
7))6))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
7))36%43))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)3 0=))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)3 0=# )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)30=1+#))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)3>3)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)?"#@536))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)536?"#@))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))-
)""#)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
)A5#36%43# )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
364
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
)9:+#.++#45#36%# )))))))))))))))))))))))))))))))))))))))7
)-"B1C-7)D)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
)/-#")))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
)$())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))7
0. Introduction
' " #"%#>"++"
+#"# $#">" ">+#)#
## $"" + #>++# # >
+)&>$1>#"= " # =>%##
""#> %" ")3>####"
"E ++ %"$""+$"##
+$ " )
!#""?5#4"3@""+""% #
+"%+ %"$+%#"> #
#")8:+#">" #"%5#2/"##>
2A" #+#>++#"#"%9+> "#+
F/)!#""#" ""#"$
> ##"#">""##"#"
+#+")6 +#"% # )' ##>
"*
' % " %)' +")2)
5#"%++#"% % #">$"">+#"#
# 5##+#%++#"##%## "5#")
4"%++#"% 4#">$"##
4#"#+#%++#"##%##4")
464
1. Calendars and Dates
398161'16*' Julian calendar #"%# "%5#2/7)2)? /
$E"$%"@)1 #" :"-7"
:+$/ > -77")#$# %""%-7)"#
%"# #=##")3 5#2#"##"Julian
dates"%"> 5#3%)
398161'16*' Gregorian calendar "5##"> :"-7":+
#+> -77")(+ :#"$%#%/:+
> #%"$%#%/)' #"")3 4
#"##"Gregorian dates)
398161'16*' Julian proleptic calendar#""%++# # 5##"
%=$% 5##">$")
398161'16*' Rata Die %"+" %"#$%"
3%- )' 5 3")
398161'16*' Julian Day NumberJulian DayJD+# %
""" G$#'?4> @5
/> $ 5#+#+#")' " ">
##++"%5+ .#E%>""%
")#" $H$##"" %6$%//-
>"" 4#"#>++#")5#"5#36%"
%"> 5#")
1 53%:+"+ %> #"
")'%#$:+#)
'%#
Gregorian Date Time JD number
3%- ///-)
5 "?I" @ ///-)
5 ////)
5 +" ////
5 " 5 ////)
5#"" 5##").##4"" 4#")
'%# > >5#""4"# 5#36%)' ""
$ %#+ 5#"43)1""5#"
5#36%$ #> "J535#")J1 """
4" 5#36%$ #> "J534")J
6% J3J#+" %" )' > 5#36%
> "+# ##>")' "% /)+
" 53% "E )
564
'%#
Year Month Day JD for
Julian date
JD for
Gregorian
date
Comment
/- /) -) ) ""#53%4
/- /) -) ) 4"53
/- ) -) ) ""#53"?" @
/ ) ) -) ""#"%53
/ ) ) -) 5#"53
/ ) ) -) ""#53"
) ) ) ' ")2)
) 7) ) 3K-7
- ) ) ) 3K-
-) /) //) 3K
) /-) /) 3K
/) ) /) #"%4
) ) 7) "4
/ -) --/) --/) +#
) /) /) ""5#3)
) /-) /)
) /-) /-)
) //7) //) G:
) ///) ///-) 2?3.@
' 5#36%""#$ 5#+#+#" %/
#" 5#2#" 7)" 5#36%
)' #"" $#+$/)6 "##>
' "%/?5#2#"@ " 4?""8"
% 4#"@"537))6## " 4
#""" 4#"##+++#)1+%#
5#2#" 4 42#"% 4)
G 5#36%$" +%#% $"%
#+%#)
664
2. Gregorian or Julian date to Julian Day
Number
2.1 Gregorian or Julian date to Julian Day Number -
Algorithm Development
# "$#+%% %)2$4#""+#
%#$ E)1 $"#$+# 4
#" "%%)
' %"%>##%$" 5"8%"" -
"/ ")5"8%;$"
;)1 >""> ?"" -@"
# 8% ##>""" /)' ++
:"#+ " J)J>##% +#
## %#+E+#""+#
> # % %" +" )
. % 5#"%""#$ ")8%#
% )53) " 4#")'
)53)" 5#36%" +")
' )%""" "%?@ 53)6 >$ "
4#""$ %"% 4#">$")
' >=# "+ # 4#"""
4+#+#")
6: " ")' #" ##>*
;L-7FB;C/DB;CDFB;C/D
' :+"#" # -7"+#:"#+
> #+$/:+# #"$%#%/)&B:D
greatest integer function B:D :)' BDKB)DK
BDKB)DK"B-DK-)8+$% >
#+%)
6 # #+ %"#$ E%
"")#$ E #+/"8%/+
% -)' :+B;CD####+> #B;C/D
""%= "$%#%/)
8## %" + +" ")' ##>$
"" :+##*
764
864
month days in previous months
-
/ -
7
7
-
/
/
/
- -7
/ --
.## :+8% --"# + #
++:%"" #+ $#$"$
)% >##>=+#%:""#
%>##% > $ %#%##" >)
' >##= *
81M?LMF@
>
MK %
K #+ #
K ;+ #"
81M?@ )
6>81M?@$ $#MF +" 81M$#
$#MF;+%#" $#;F)' $# ;
%+ "%% #"#+# > # ##
$#> $+%#")&>$"#>++
"> H+ $#)3 > #> :
#++?/-@?7@ #+K-)7";+K))' #>
#++?/--@?-@ #+K-)//";+K
))' >#?)------------7/)----------@"1## +$
+ >##%#> +"$# +"=
#+-)//-)7)4$#+ $#/)----------L
)------------7%" ;+)&>$ >####% ;+
$# >=>##)
8+#+$>+%%# #+-)7%
"" #"%"#+" )1#+K-)7 #
+$ ;+)777777777777% # ;+$# >=
>##)' ;+$#)/)# $#)##%
964
= #>#" +#+ " >#"
+" ""#)'
81M?-)7LM)/@
%"+"""$#)' #%$"
$)8:+#
81M?-)7LM)/@
KF81M?-)7LM)/F@
KF81M?-)7LMF-)7@
KF81M?-)7L?MF@@
81M?-)7LM)/@H$#?-L/@N-CK-)7"/CK)/)
#+%#" % " %"
"%"%$).++:+# $ ?LMF@N- %
" %++#"$). #+
-)//-)7C-#% )' +#
-)//L-K)///-)7L-K))' %$ )
' #+)C-K-)-)' #++# ;+ )7
)-)' % )7L-K))-L-K> #
+?@:#""%)' #$)
' #$#*?L@N-%" H")&JNJ
> +#"$> )' +%#
%$%#JJ $#- #>+$)
1064
2.2 Julian Day Number - Algorithm Forms
2.2.1 Gregorian Date to Julian Day number
' +$# "$#+I ##>## $
435#36%)1 "+*
[x]K ":":)8:+#B)DK)' ##"
#?:+#2C2FF@)
INT(x)KB:DOOOOOO6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
.'92## $#PONE ##> "*
) PK;F?/@N
) 18Q-'&96PK;9(.9PK;
-) + "%+#"# %
>## > 58%)
.'92## $#8ONE ##> "*
) 8 $#$":"%)' $ $#-7---7-/
//)' "## ""=#+
+#)
) 18Q-'&96KF
8K?-L/@N
-) 18Q-'&96KF
8K?L@N-
' ##> "$)
/) 8K?L?L??/@N@@@N-
' # "18" "$ )
) 1# ""
18Q-'&96KF
8K81M?-)7L)/@KF81M?-)7L?F@@
%"# # ###>"="+)
+%#"%" +$)6 --)7L)/#>
+$" 81M %")
1164
.'9-' 5#36%4"
3F8F-7LPFBPC/DBPCDFBPC/DF)
' :+$#"4"$+#+4"#" $
)
8:+# ##>H%"## 5#36%4"*
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K3F?-L/@NF-7L;FB;C/DB;CDFB;C/DF)
2.2.2 Julian Date to Julian Day number
' >" 4"5#36%# "%"
"+"5#"5#36%# )8 %"
5#")7) ))' ?5#"@
"%> > """7)+" ""53))
' ""#+$/":#"
"$%#%/)' #++#-7L;FB;C/D> :+"
B-7L;FB;C/DDKB-7)L;D)' 5#36%5#"
3F8F-7LPFBPC/DF7)
> $#38"P%)8:+# ##>H%"##
5#36%5#"*
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K3F?-L/@NF-7L;FB;C/DF7)
1264
2.3 Gregorian date to Julian Day Number - Implementation
2.3.0.1 Choices to be made
' ##>" $%""+#*
"+" 45#2#"R
0 "%++"R
0 %>"E>##%"R
1 $#%## R
1# $#%#"H"R
1"#: J18C'&96J++"R
2.3.0.2 Notation
[x]K ":":)8:+#B)DK)' ##" #
?:+#2C2FF@)
INT(x)KB:D6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
2.3.1 Gregorian Date to Julian Day Number Implementation
Examples
) 843+""3?#%@ ?> 5K@"
;?@ 5#36%53%##"##>*
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K3F?-L/@NF-7L;FB;C/DB;CDFB;C/DF)
296'.*
o' ++"##"% >"E +#)
o# ?-L/@N#:+":"##
+#)
o.##+# #)
) <.121+#%*
1364
.GI"?I".3G(9.(64.16'949".3G(9@
SKA"A"++
TKA"A" ++
18TQ-'&96A 58%
OOOOOOTKTFA5K-8%K/
OOOOOOSKSA +$
96318A 58%
I"K"UF?-LT/@NF16'?-7)ULS@16'?SL)U@F16'?SL)U@F)U
963.G
-) 1Astronomical Algorithms+75$ # ?##@
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K81M?-7)?;F/7@@F81M?-)7?F@@F3F81M?;C@F81M?81M?;C@C/@/)
.-7)L/7K)
"-)7?F@@K81M?-)7L)/@F
"81M?81M?C@C/@K81M?;C/@
")FF/)K)
H$#"$"# +$"" +$)
296'.*
o' # #$#"$;)1%"%#$;%
+# 81M> )
o' /7>"" +:+ >#"##>
53%##"$5#3)1#+# #
4")
o' -)7""-)7%")'
+$"$ -)7 > >")
o' "%
81M?81M?;C@C/@ 81M?;C/@
H$##
K81M?;C@
"F81M?C/@ $#B;CDFB;C/D
#C/+" +)
/) 8" 4#"The Explanatory Supplement to the Astronomical
Almanac+7/$ $# 5#36%43
6$%-/-*
1464
53K?/7L?;F/F?/@N@@N/F?-7L?L??/@N@@@N?-L??;F/F?/@N@N
@@N/F3-OOO
& :+*
?/@N
"+# "# ;" %##:+"*
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
0 $#";
53K?/7L?;F/@@N/F?-7L?@@N?-L??;F/@N@@N/F3-
;$?16'"81M ##>@)' ##>
"% > #"*
) ?/7L?;F/@@N/K81M?-7)L;@F-
) -7L?@@NK81M?-)-------L)77777777@F-
-) ?-L??;F/@N@@N/K81M?;C@F81M?;C/@-7
#%>
53K81M?-7)L;@F81M?-)-------L)77777777@81M?;C@F81M?;C/@F3-
-7F-F-
K81M?-7)L;@F81M?-)-------L)77777777@81M?;C@F81M?;C/@F3F
> > > "$#+% 53+$"" "+
" $)
296'.*
o' # $#"4# /)
o' +"")' 53 +"
"# ##>")
o' /"/>"" 81M+"
#$4"##/)
o116'$#%# $
16'?-7)L;@-7L;F16'?;C/@ # %
?/7L?;F/@@N/
)
o116'$#%# $
16'?;C@F16'?;C/@% ?-L??;F/@N@@N/
1564
) 2"9:+#4536
LLL06164LLL6
CC+# " 16'?@"
""
?@+# 81M?@" ")
"4'536?3;@*
JJJ45#36%2##JJJ
Q-*
FK
;K
?3F??-L/@C@F-7L;F;CC/;CCF;CC/F)@
2.3.2 Julian date to Julian Day Number Implementation
Examples
) 85#"+""3?#%@ ?> 5K@";
?@ 5#36%53%##"##>*
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K3F?-L/@NF-7L;FB;C/DF7)
296'.*
o' ++"##"% >"E +#)
o# ?-L/@N#:+":"##
+#)
o.##+# #)
) <.121+#%*
.GI"I?I".3G(9.(64.16'949".3G(9@
ALLL06164LLLL1+35#6'4
SKA"A"++
TKA"A" ++
18TQ-'&96A 58%
OOOOOOTKTFA5K-8%K/
OOOOOOSKSA +$
96318A 58%
I"K"UF?-LT/@NF16'?-7)ULS@F7)U
963.G
1664
-) 1Astronomical Algorithms+75$ # 5#3%
5#"?##@
18Q-'&96
OOOOOOKF
OOOOOO;K;
96318
53K81M?-7)?;F/7@@F81M?-)7?F@@F3/)
.-7)L/7K)
"-)7?F@@K81M?-)7L)/@F
")F/)K7)
H$#"$"# +$"" # /7)' "
53$53K)"5/ 5#2#")
296'.*
o' # #$#";# /7?+%#"I5
"8%@)' > ?;F/7@ 81M
#>+$ "";$#)' # %"
%#$;%+# 81M :+81M?-7)?;F
/7@@> ) " +#
/7%"+"> )
o' -)7""-)7%")'
+$"$ -)7 > >")
1764
3. Julian Day Number to Gregorian date
3.1 Algorithm Development
' %*
) 2$ 5#36% %"%")
) 3 % %")
-) 2## %" ")
/) 3 %+"% ")
) 2## %" ")
3.1.1 Choosing a Base Date
# "$#+%% %" ">##%#$" #
$5#36%).$>##%4" %">##%
4E)
' 5#36%$" %"%" E)'
#"> 5"8% -"/ ")' ++
:"#+ " J)J>##%
+# ## %#+E+#""+#
> # %" +" %)
(3% "#)4;#+;3/K";3K
#H" ;3/K)1 "5%"
+>" %"%)8:+#8%;%
5;% ).## :""#+
;#"% 4#+%++#";F)
8'%#% "$5#36% %"
E 4#")%%")1"%on
E 4#")>#"%%")
3.1.2 Determining the Year
0 %">#$% %##>
$+""")4$; %"% "
"+"+ >#+##")84" %""
% ##-7L;FB;C/DB;CDFB;C/D> B:D )& :
#+""""% "#"% +#8% +"
)
3.1.2.1 Average days per year approximation
' %""%+;# H#-7L;FB;C/DB;CDFB;C/D
++:#H#-7L;F;C/;CF;C/K;L?-7FC/CFC/@K;L-7)/
1864
$#%# )13 "%;>
$# -7?-77#+@ =";$
-7L;FB;C/DB;CDFB;C/DF3")
; %++:#
16'??-7L;FB;C/DB;CDFB;C/DF3@C-7)/@
9: ++:*
16'??-7L;FB;C/DB;CDFB;C/DF3@C-7)/@
K16'??-7C-7)/@L;F?B;C/DB;CDFB;C/DF3@C-7)/@
K16'??-7C-7)/@L;F?B;C/DB;CDFB;C/DF3@C-7)/F?;C/;CF;C/@C-7)/?;C/
;CF;C/@C-7)/@
K16'??-7L;@C-7)/F?B;C/DB;CDFB;C/DF3@C-7)/F?;C/;CF;C/@C-7)/?;C/
;CF;C/@C-7)/@
K16'??-7L;F?;C/;CF;C/@@C-7)/F?B;C/DB;CDFB;C/D?;C/;CF;C/@F
3@C-7)/@
K16'??-7)/L;@C-7)/F?B;C/D;C/B;CDF;CFB;C/D;C/F3@C-7)/@
K16'?;F?B;C/D;C/B;CDF;CFB;C/D;C/F3@C-7)/@
K;F16'??B;C/D;C/B;CDF;CFB;C/D;C/F3@C-7)/@
' "%>;" ++:"H#
16'??B;C/D;C/B;CDF;CFB;C/D;C/F3@C-7)/@
6 " $##+#/""";,))# $#;
"#/> $#%>"-"%:"> $#")
G# $#)-/-;"#/K--?
#+@"3K)' :$#)-/7;"#/K?
#+@"3K-77). "%>:"$#
%%"=E)
' $# #"%+#"++#" %"
" %"%")1" ++ = "
%##+"% + %##/+")' ##>
$#B;CD"B;C/D%#" "" %
% $")
3.1.2.2 Average days per century approximation
' %## %" $">##>%"")
(;% ? @$")' B;CD %##
" $#%""$ %"%>%""). %##
%""$ "%"" -7)/L "+
" "%>B;CD"
1964
16'?16'??-7L;FB;C/DB;CDFB;C/DF3@C-7)/@C@
K16'??-7L;FB;C/DB;CDFB;C/DF3@C?L-7)/@@
1+# "H#
B;CDF??-7L;FB;C/DB;CDFB;C/DF3@C?L-7)/@@
:")
8 " $##+#/""";,))#
$#;"#/> $#%>"-"%:")' "
" $#)7/7////-> ;"/K-?#+@
3K)' :$#)> ;"/K-?#+@
3K-77)1"++:%$#" $$#
H#"# ++# +"#E)'
%"%%V*
??-7L;FB;C/DB;CDFB;C/DF3V@C?L-7)/@@
' H
VC?L-7)/@W))
"A:").#$V
VW)7/7/7
' $# %""## E)'
VC?L-7)/@Q)7/7////-
"#$V
VQ)77/
'
)7/7/7QVQ)77/
'
B;CDK16'??-7L;FB;C/DB;CDFB;C/DF3V@C?L-7)/@@
>
)7/7/7QVQ)77/
3.1.2.3 Days per 400 years approximation
#"##$#B;C/D
K16'??-7L;FB;C/DB;CDFB;C/DF3V@C?/L-7)/@@
2064
>
)7QVQ
&>$B;CD %""BB;CDC/DKB;C/D%###")
3.1.2.4 Application of century and 400 year approximations to determine
the year
.+++V% ="/++::#
"
-7L;FB;C/DB;CDFB;C/DF3
%$"
-7L;FB;C/DF3
%""$#B;CD"%$#B;C/D)=>";$
-7L;FB;C/DF3
' %" ++:
B?-7L;FB;C/DF3@C-7)D
KB?-7L;F)L;)L;FB;C/DF3@C-7)D
KB?-7)L;)L;FB;C/DF3@C-7)D
K;FB?B;C/D;C/F3@C-7)D
9:
?B;C/D;C/F3@C-7)
$# )7//777- % #+""#+
")' :#+-"-77)' A$#""E
> ++#" $#V%"*
?B;C/D;C/F3V@C-7)
>
QVQ-7)L)7//777-K)
3.1.2.5 Alternative application of the century to determine the year
%## $%"" %%"$ "
$## " $#>##H %##+)
1 >"%
-7)/LLB;CD
2164
")1$%#J1J+ %"> ?
" ##$#>%"#$ "@
16'?1C-7)@KB1C-7)D
$ %:+> 1#+#/)0 1#+#/ $#+
+" #"#"#+")1 1:#"$%#%-7)?
"E@% $## H)1% > *
B1C?-7)FC/@DKB1C-7)D
+$""1#+#/"# -7)L"
1#+#/
B1C-7)DKB1C?-7)FC/@DF
' B1C?-7)FC/@D H)
3.1.3 Determining the Day of the Year
1P %"%"; "%"" 4
2#" >##%-7)L;B;CDFB;C/D"+5;"
3KP16'?-7)L;B;CDFB;C/D@
> 3 "%> ;4")
6 +##4"
-7L;FB;C/DF3
%##" "%3%##"%%-7)L;)
3.1.4 Determining the Month
' %" + ">"$ "%
"A)0 "" :+##*
days in previous months month
-
- /
7
7
-
/
/
/
2264
-7 -
-- /
.## :+8% --"# + #
++:%"" #+$"$ )
% >##>=+#% :""#%
>##% > $ %#%##" >)
' >##= *
81M?LMF@
>
MK"%
K #+ #
K ;+ #"
81M?@ )
6>81M?@$ $#MF $ #$#
;+%#" $#;F)' $# M%
+ "%% #>#"%"#+# > H"#>#"
## $#> $+%#")&>$A"#
>++ "> H+ $#)3$#
#> :#++?-@?--/@ #+)----";
+K)77-/7)' #> #+?7@?-/@ #+
K)-7-7//";+K)/7)' >#?/)-----------
)------------/7@"1## +$+ >##%# +> +"
$# +"= #+)-7-7//
)----)4$#+ $#
)------------/7L/)-----------
%" ;+)&>$ >####% ;+$# >=>##)
8:+##+)-777 ;+)//--
)77/7/)
' %"#= *
?MF@N2
> "2)1+###$#2"$#2 +>>
" "$#"%"% ). +%#$#"+#"
##>%#*
2364
C A B range (value of upper bound can not be used)
- /)/7)
-7 )-)
-7 -/
- -
7-/ - ///
-7 7
-7 7/-
7-7 / /
7-7 / 7-
7-7 / 77
7-7 /- 7---
3.1.5 Determining the Day
% %"" "%##"%% %
" + )' >## > $ %"
+ )' >:"+# "$#+$4
5#3 +"5#3%">##%+"" )
3.2 Julian Day Number to Julian Date - Algorithm
Development
3.2.1 Choosing a Base Date
# "$#+%% %" ">##%#$" #
$5#36%).$>##%5#" %">##% 5#
E)
' 5#36%$" %"%" E)'
#"> 5"8% -"/ ")' ++
:"#+ " J)J>##%
+# ## %#+E+#""+#
> # %" +" %)
(3% "#)5#;#+;3/K)1
" +>" 5)8:+#8%;
%5;% ).##
:""#+;#"% 5##+%
++#";F)
2464
8'%#% "$5#36% %"
E 5##")%%")1"%on
E 5#7)>#"%%")
3.2.2 Determining the Year
0 %">#$% %##>
$+""")4$; %"-7L;FB;C/DK
B-7)L;D> B:D )& :#+""""% "
#"% +#8% +")
1P %"%"; "%""
3KP-7)L;
>##% "%> ;5#'")' %""%+
;# H#-7L;FB;C/D++:#H#-7L;F;C/K-7)/L;
$#%# )13 "%;> $#
-7?-77#+@ =";$
-7L;FB;C/DF3")
; %++:#
16'??-7L;FB;C/DF3@C-7)@
9: ++:*
16'??-7L;FB;C/DF3@C-7)@K16'??-7L;FB;C/DF3@C-7)@
KB?-7L;F)L;)L;FB;C/DF3@C-7)D
KB?-7)L;)L;FB;C/DF3@C-7)D
K;FB?B;C/D;C/F3@C-7)D
9:
?B;C/D;C/F3@C-7)
$# )7//777- % #+""#+
")' :#+-"-77)' A$#""E
> ++#" $#V%"*
?B;C/D;C/F3V@C-7)
>
QVQ-7)L)7//777-K)
2564
3.2.3 Determining the Month and Day
%"" +"" "":#
"%" +$$5#36%4")
3.3 Julian Day Number to Julian and Gregorian Date -
Algorithm Forms
3.3.1 Julian Day number to Gregorian Date
' +$# "$#+I ##>## $
5#36%43)1 "+*
[x]K ":":)8:+#B)DK)' ##"
#?:+#2C2FF@)
INT(x)KB:DOOOOOO6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
.'9(53% 5#36%)2##
PK16'?53)@
K #+53)K?53)@P
.'92## $#> %##*
K16'?PV@C?-7/)@@
> )7/7/7QVQ)77/
.'9-2## "> > #? 5#2#"@%""%="$"
42#")' $# %")
KPVF16'?C/@
> QVQ)
?1$=VKVK))@
.'9/2## $#; #"> *
;K16'?C-7)@
2664
.'92## $# " ONE ##>*
) 2KPF16'?C/@16'?-7)L;@
) 2K81M?16'?-7)L;@@F
' +##$#> #"+
%" ?16'?-7)L;@@#> $#+))1
#
2K16'?-7)L;@
> 2"#)
.'972## $# ONE ##>*
) K81M??L2F/7@C-@
) K81M??-L2F/@C7-/@
?6 7-/X/" "$%+#"> % %
+)@
-) K81M??/L2F@C7-7@
?6 7-7X7" %+#"%= ++7%-%%)@
/) K81M?V-L2F)------------/7V-L/)-----------@
> V-K)-7-7//)----
.'92## $#8> %" +"
ONE ##> "*
) 8 $#$":"%)' $ $#-7-///
-7--)? $# - /)@' "## "
"=#++#)
) 8K?-L/@N
-) 8K?L@N-
' ##> "$)
/) 1# ""
8K81M?-)7L)/@KF81M?-)7L?F@@
%"# # ###>"="+)
+%#"%" +$)6 --)7L)/#>
+$)9 81M %")
2764
.'9' 4"A"
3K28F
.'92$ "#"5ONE ##> "*
) 1W
OOOOOOO;K;F
OOOOOOOK
"
) ;K;F81M?C-@
KL81M?C-@
' 4"
;K;
K
' ##$#"5#36%#"$536"+"4"?
+%#+#+4"@)
9:+#
' ##>H##4; ""35#36%*
PK16'?53)@ +
K53)P +
4KP) "#+
K16'?4C-7/)@ +
K16'?C/@ ++-
K16'??F4@C-7)@ ++-"+/
2KFP16'?-7)L@ +
K81M??L2F/7@C-@ +7
"K281M??-L /@C@F +"
18 W'&96 +
OOOOOOOKF +
OOOOOOO K +
96318 +
2864
3.3.2 Julian Day number to Julian Date
' +$# "$#+I ##>## $
5#36%5#3)1 "+*
[x]K ":":)8:+#B)DK)' ##"
#?:+#2C2FF@)
INT(x)KB:DOOOOOO6'9*+# $"")
FIX(x)K %:> )8:+#B)DK
x\yK81M?:C@
.'9(53% 5#36%)2##
PK16'?537)@
K #+537)K?537)@P
.'92## $#; #"> *
;K16'??PV@C-7)@
> QVQ)
.'9-2## $# " *
2KP16'?-7)L;@
.'9/2## $# ONE ##>*
) K81M??L2F/7@C-@
) K81M??-L2F/@C7-/@
?6 7-/X/" "$%+#"> % %
+)@
-) K81M??/L2F@C7-7@
?6 7-7X7" %+#"%= ++7%-%%)@
/) K81M?V-L2F)------------/7V-L/)-----------@
> V-K)-7-7//)----
2964
.'92## $#8> %" +"
ONE ##> "*
) 8 $#$":"%)' $ $#-7-///
-7--)? $# - /)@' "## "
"=#++#)
) 8K?-L/@N
-) 8K?L@N-
' ##> "$)
/) 1# ""
8K81M?-)7L)/@KF81M?-)7L?F@@
%"# # ###>"="+)
+%#"%" +$)6 --)7L)/#>
+$)9 81M %")
.'97' 5#"A"
3K28F
.'92$ "#"5ONE ##> "*
) 1W
OOOOOOO;K;F
OOOOOOOK
"
) ;K;F81M?C-@
KL81M?C-@
' 5#"
;K;
K
' ##$#"5#36%#"$536"+"5#"?
+%#+#+5#"@)
3064
9:+#
' ##>H##5#; ""35#36%*
PK16'?537)@ +
K537)P +
K16'??P)@C-7)@ +
2KP16'?-7)L@ +-
K81M??L2F/7@C-@ +/
"K281M??-L /@C@F +"7
18 W'&96 +
OOOOOOOKF +
OOOOOOO K +
96318 +
3.4 Julian Day Number to Gregorian and Julian Dates -
Implementation
3.4.1 Choices and Notation
3.4.1.1 Choices to be made
' ##>" $%""+#*
"+" 45#2#"R
0 "%++"R
0 %>"E>##%"R
1 $#%## R
1# $#%#"H"R
1"#: J18C'&96J++"R
3.4.1.2 Notation
[x]K ":":)8:+#B)DK)' ##" #
?:+#2C2FF@)
INT(x)KB:D6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
3164
3.4.2 Julian Day Number to Gregorian Date Implementation
Examples
) ' ##>H##4; ""35#36%53)
1# )
PK16'?53)@
K53)P
4KP)
K16'?4C-7/)@
K16'?C/@
K16'??F4@C-7)@
2KFP16'?-7)L@
K81M??L2F/7@C-@
"K281M??-L /@C@F
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o' ++"##"% >"E +#)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+#> #++
#)#> + +#)
) ' ##>H##4; ""35#36%53)
1 :+ $#53"3 5#36%%
#)
PK16'?53)@
K53)P
&KLP
K16'?&C-7/@
K16'?C/@
K16'??LF&@C-7@
2KFP-7L16'?C/@
K81M??L2F/7@C-@
"K281M??-L /@C@F
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
3264
296'.*
o' ++"##"% >"E +#)
o' %+#"%"$53W
E)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+# #)
-) ' ##>H##4; ""35#36%53)
1 :+ $#53"3 5#36%%
#)1"$" +"$%+>)
LLLL06164LLL#$#"" H#)?+#)
E@)
PK16'?53)@
K53)P
&KLP
K&N-7/
K.&18'14&'?@
K?LF&@N-7
2KFP-7L.&18'14&'?@
K.&18'14&'??-L2F/@/@
"K2.&18'14&'??L@@F
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o#$#"" H#)?+#) E@)
o# .&18'14&'??-L2F/@/@".&18'14&'??L@@#
:+ ":"##+#)
/) <.121+#%# *
6*S"-%?#@"U""%#+#
.GI"?I".3G(9.(64 .16'949".3G(9@
A16G'*I"K5#36%
AG'G'*4 ""
PSK16'?I")U@A3
UKI")UPSA #+ "
3364
4UKPS)U
SK16'?4UC-7/)U@A> #
SKS16'?SC/U@A5#"> #)
K16'??4UFS@C-7)U@
2SKPSFS16'?-7)L@A"
K?L2SF/7@N-
"K2S??-L /@N@FU
18 W'&96A$ 5
OOOOOOOKF
OOOOOOO K
96318A$ 5
963.G
) <.121+#%1 $*
.GI"?53.3G(9.(64 .16'949".3G(9@
ALLL06164LLL6(;!(131853W)?8%)E@
A16G'*I"K5#36%
AG'G'*4 ""
PSK16'?53)@A3
UK53)PSA #+ "
&SKLPS
SK&SN-7/A> #
SKSSN/A"I" 5#"> #
K?LSF&S@N-7
2SKSFPS-7LN/A"
K?L2SF/7@N-
"K2S?-L /@NFU
18 W'&96A$ 5
OOOOOOOKF
OOOOOOO K
96318A$ 5
963.G
7) 1Astronomical Algorithms+7-5?##@$ ##># )
' % >%"$"# +$"" 5#3%
H#7) "8%)/ +#+4
#")
PK81M?53F)@
K53F)P
4K81M??P77)@C-7/)@
KPFF481M?4C/@
KF/
2K81M??)@C-7)@
3K81M?-7)L2@
3464
9K81M??3@C-)7@
3 K381M?-)7L9@F
19
OOOOOO K9
OOOOOO;K2/7
#
OOOOOO K9-
OOOOOO;K2/
"
296'.*
o' # #$#"5#3% H#77)
"8%)/ +#+4#")6
# $#"##$5#3%% # >
" 5#3 4" 5#3
6%+"% 4)
o181M+#"> # $#"##5#3
6%> >"E)
o -)7 # A%+#"%-)7)# #"%
"$#+" #+C-)7K)-7-7%#>
;+> )-77/)7/7-)
) 8" 4#"The Explanatory Supplement to the Astronomical
Almanac+7/$# %8##"!8#" ##"
6$%-/-$#5#36%)' # % >%
#"%" # "$#+)
(K53F77
6K81M??/L(@C/7@
(K(81M??/7L6F-@C/@
1K81M?/L?(F@C/7@
(K(81M??/7L1@C/@F-
5K81M??L(@C//@
3K(81M??//L5@C@
(K81M?5C@
K5FL(
;KL?6/@F1F(
296'.*
o' # $#""%6$%-/-?$53%@)
o' # #"%#"" "#5#36%> E#
+)' # > > %")
o' # "" %"#+#" "
#"$)
3564
o' # #$ "" $ %> #
>"%"-))))
) 2"9:+#5364
LLL06164LLL6
CC+# " 16'?@"
""
?@+# 81M?@" ")
"5364?536@*
JJJ5#36%43JJJ
'K536)
PK'CC
K'P
4KP)
K4CC-7/)
KCC/
K??F4@CC-7)@
2KFP?-7)L@CC
K??L2F/7@C-@
"K2??-L /@CC@F
W*
FK
K
?B "D@
3.4.3 Julian Day Number to Julian date - Implementation
Examples
) ' ##>H##5#; ""35#36%53)1
# )
PK16'?537)@
K537)P
K16'??P)@C-7)@
2KP16'?-7)L@
K81M??L2F/7@C-@
"K281M??-L /@C@F
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
3664
o' ++"##"% >"E +#)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+#> #++
#)#> + +#)
) ' ##>H##5#; ""35#36%53)1
:+ $#53"3 5#36%%
#)
PK16'?537)@
K537)P
K16'??LP@C-7@
2KP-7L16'?C/@
K81M??L2F/7@C-@
"K281M??-L /@C@F
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o' ++"##"% >"E +#)
o' %+#"%"$53W+#
E)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+# #)
-) ' ##>H##5#; ""35#36%53)1
:+ $#53"3 5#36%%
#)1"$" +"$%+>)
LLLL06164LLL#$#"" H#7)?8%)
E@)
PK16'?537)@
K537)P
K81M??LP@@C-7@
2KP-7L.&18'14&'?@
K.&18'14&'??-L2F/@/@
"K2.&18'14&'??L@@F
18 W'&96
OOOOOOOKF
3764
OOOOOOO K
96318
296'.*
o#$#"" H#7)?8%) E@)
o# .&18'14&'??-L2F/@/@".&18'14&'??L@@#
:+ ":"##+#)
/) <.121+#%# *
6*S"-%?#@"U""%#+#
.GI"I?I".3G(9.(64 .16'949".3G(9@
A16G'*I"K5#36%
AG'G'*5# ""
PSK16'?I"7)U@A3
UKI"7)UPSA #+ "
K16'??PS)U@C-7)U@
2SKPS16'?-7)L@A"
K?L2SF/7@N-
"K2S??-L /@N@FU
18 W'&96A$ 5
OOOOOOOKF
OOOOOOO K
96318A$ 5
963.G
) <.121+#%1 $*
.GI"I?53.3G(9.(64 .16'949".3G(9@
ALLL06164LLL6(;!(131853W7)?+#"E@
A16G'*I"K5#36%
AG'G'*5# ""
PSK16'?537)@A3
UK537)PSA #+ "
K?LPS@N-7
2SKPS-7LN/A"
K?L2SF/7@N-
"K2S?-L /@NFU
18 W'&96A$ 5
OOOOOOOKF
OOOOOOO K
96318A$ 5
963.G
3864
7) 1Astronomical Algorithms+7-5?##@$ ##># )
' % >% +$#"$"# +$"" 5#3
% H#7) "8%)/
+#+4#")
PK81M?53F)@
K53F)P
KPF/
2K81M??)@C-7)@
3K81M?-7)L2@
9K81M??3@C-)7@
3 K381M?-)7L9@F
19
OOOOOO K9
OOOOOO;K2/7
#
OOOOOO K9-
OOOOOO;K2/
"
296'.*
o' # #$#"5#3% H#) "
5/ +#+5##")6
# $#"##$5#3%% # >
" 5#3 4" 5#36%
+"% 4)
o181M+#"> # $#"##5#3
6%> >"E)
o -)7 # A%+#"%-)7)# #"%
"$#+" #+C-)7K)-7-7%#>
;+> )-77/)7/7-)
3964
3.4.4 Introduction to Analysis of Date Algorithms
3.4.4.1 Analysis of Julian Day Number to Gregorian date algorithms
' #E $$# $ 5#36%
43).## # "#> #5#36%##$
#+ % +"" " +" +
# ")#:#"" $#"% #"
%5% $#%#>##=>"$# %>
JJ" +%")' # +#"%
$%> %" %" +" %
+#"":")
' ##>%#$" +#: $+#
$%+")' 13%# +#)' %# >
# #+%#+#:)' "" J%J#
+#+# #=## +"$
+" + # > #)' ##>#=$
+#<.122"0">)
Analysis of Julian Day Number to Gregorian Date Algorithms
ID AUTHOR TYPE RANGE + - * \ / SHIFT INT FIX
# ## - - /
1 ## 7 /
- 1 W) /
7 # W7) - 7
8## 1 W) 7 7
O
4064
3.4.4.2 QBASIC Timing of some Julian Day Number to Gregorian date
implementations
Routine Type Range Conversions per second Comments
/ 1 W -/)- 6#53##>"
8(1949( 1 W) -/) 6#53##>"
G- 1 W) -)-
G # ## )7 '="+
G # ## -)
# W7) )
.G%?I".3G(9.(64 .16'949".3G(9@
A# > ="+
PSK16'?I")U@
UKI")UPS
4UKPS)U
SK16'?4UC-7/)U@
UK4UFS16'?SC/U@A">5#
K16'??U@C-7)U@
2SKU16'?-7)L@AU")"$"+
K?L2SF/7@N-
"K2S??-L /@N@FU
18 W'&96
KF
K
96318
963.G
.G%?I".3G(9.(64 .16'949".3G(9@
A16G'*I"K5#36%
AG'G'*4 ""
A""#
PSK16'?I")U@A3
UKI")UPSA #+ "
4UKPS)U
SK16'?4UC-7/)U@A> #
SKS16'?SC/U@A5#"> #)
K16'??4UFS@C-7)U@
2SKPSFS16'?-7)L@A"
K?L2SF/7@N-
"K2S??-L /@N@FU
18 W'&96A$ 5
KF
K
96318A$ 5
963.G
4164
.G%-?I".3G(9.(64 .16'949".3G(9@
ALLL06164LLL6(;!(131853W)? "E@
A16G'*I"K5#36%
AG'G'*4 ""
A ""$+#
PSK16'?I")U@A3
UKI")UPSA #+ "
&SKLPS
SK&SN-7/A> #
SKSSN/A"I" 5#"> #
K?LSF&S@N-7
2SKSFPS-7LN/A"
K?L2SF/7@N-
"K2S?-L /@NFU
18 W'&96A$ 5
KF
K
96318A$ 5
963.G
.G%/?I".3G(9.(64 .16'949".3G(9@
A682'16(5G(163;6G9((093
A5G(163;6G9G.'949'9'&6
PSKI"
&SKLPS
SK&SN-7/
SKSSN/
K?LSF&S@N-7
2SKSFPS-7LN/
K?L2SF/7@N-
"K2S?-L /@N
18 W'&96
KF
K
96318A$ 5
963.G
.G##?I".3G(9.(64 .16'949".3G(9@
#SKI"F77
SK?/L#S@N/7
#SK#S?/7LSF-@N/
1SK/L?#SF@N/7
#SK#S?/7L1S@N/F-
5SK?L#S@N//
"K#S?//L5S@N
#SK5SN
K5SFL#S
KL?S/@F1SF#S
963.G
4264
.G?I".3G(9.(64 .16'949".3G(9@
A
PSK16'?I"F)U@
UKI"F)UPS
4SK16'??PS77)U@C-7/)U@
SKPSFF4S16'?4SC/@
SKSF/
2SK16'??S)U@C-7)U@
"SK16'?-7)UL2S@
9SK16'??S"S@C-)7U@
"KS"S16'?-)7UL9S@FU
189SQ/'&96
K9S
9(.9A9K/9K
K9S-
96318
18 W'&96
K2S/7
9(.9
K2S/AKK
96318
963.G
4. Modi!ed Julian Day
' Modified Julian DayMJD""*
53K53/)
53K)+"6$%))' 53%4> " "
"###)
4364
5. Rata Die
5.1 Rata Die Algorithms
' 3 %"%"3%- E +#+
4#")' 3"5 > %5#3
6%/))' # ## 3$ "" 4
2#" ## 5#36%:+ #+ %"
$" %"3%- E
%"6$%/) /-). -7"%> "
3%- $%-7 "#$ )
' E3"-7)
' ##>#+"## 3*
.'92## $#PONE ##> "*
) PK;F?/@N
) 18Q-'&96PK;9(.9PK;
-) +>+# "# %
>## > 58%)
.'92## $#8ONE ##> "*
) 8 $#$":"%)' $ $#-7---7-/
//)' "## ""=#+
+#)
) 18Q-'&96KF
8K?-L/@N
-) 18Q-'&96KF
8K?L@N-
' ##> "$)
/) 8K?L?L??/@N@@@N-
' # "18" "$ )
.'9-' 3
3F8F-7LPFPN/PNFPN/-7
' +## >##+*
18Q-'&96
OOOOOOOOKF
OOOOOOOOK
96318
"K"F?-L/@NF-7LFN/NFN/-7
4464
>
"K"
K
K
? 4#"@"
" 3)
5.2 Rata Die Implementation Examples
) ' ##>+#%<.12)1$#"##"+ #
<.12+##?-%" @)
.G?".(64.(64 .16'949".16'949@
A16G'* "> +43
AG'G'*3%
SKA3"++
TK A3"++
18TQ-'&96
OOOOOOTKTF
OOOOOOSKS
96318
"K"F?-LT/@NF16'?-7)ULS@16'?SL)@F16'?SL)@-7
963.G
) ' ##>+#%<.12)1#$#"$
3)
.G?".(64.(64 .16'949".16'949@
A16G'* "> +43
AG'G'*3%
ALLL06164LLL#$#"$3
A))"5 #
SKA3"++
TK A3"++
18TQ-'&96
OOOOOOTKTF
OOOOOOSKS
96318
"K"F?-LT/@NF-7SLSFSN/SNFSN/-7
963.G
4564
6. Inverse Rata Die
6.1 Inverse Rata Die Algorithms
' # "$#+$5#36%4"I
##>## $3%43)' #
" +> 3"5 -7"""
$ %" )
1 "+*
[x]K ":":)8:+#B)DK)' ##"
#?:+#2C2FF@)
INT(x)KB:DOOOOOO6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
.'9(3% 36%)2##
PK3F-7
.'92## $#> %##*
K16'?PV@C?-7/)@@
> )7/7/7QVQ)77/
.'9-2## "> > #? 5#2#"@%""%="$"
42#")' $# %")
KPVF16'?C/@K
> QVQ)
?1$=VKVK))@
.'9/2## $#; #"> *
;K16'?C-7)@
.'92## $# " ONE ##>*
4664
) 2KPF16'?C/@16'?-7)L;@
) 2K81M?16'?-7)L;@@F
' +##$#> #"+
%" ?16'?-7)L;@@#> $#+))1
#
2K16'?-7)L;@
> 2"#)
.'972## $# ONE ##>*
) K81M??L2F/7@C-@
) K81M??-L2F/@C7-/@
?6 7-/X/" "$%+#"> % %
+)@
-) K81M??/L2F@C7-7@
?6 7-7X7" %+#"%= ++7%-%%)@
/) K81M?V-L2F)------------/7V-L/)-----------@
> V-K)-7-7//)----
.'92## $#8> %" +"
ONE ##> "*
) 8 $#$":"%)' $ $#-7-///
-7--)? $# - /)@' "## "
"=#++#)
) 8K?-L/@N
-) 8K?L@N-
' ##> "$)
/) 1# ""
8K81M?-)7L)/@KF81M?-)7L?F@@
%"# # ###>"="+)
+%#"%" +$)6 --)7L)/#>
+$)9 81M %")
.'9' 4"A"
3K28
.'92$ "#"5ONE ##> "*
) 1W
OOOOOOO;K;F
4764
OOOOOOOK
"
) ;K;F81M?C-@
KL81M?C-@
' 4"
;K;
K
' ##$#"3%#"$3%"+"
4"?+%#+#+4"@)
9:+#
' ##>H##4; ""33%*
PK3F-7 +
4KP) "#+
K16'?4C-7/)@ +
K16'?C/@ ++-
K16'??F4@C-7)@ ++-"+/
2KFP16'?-7)L@ +
K81M??L2F/7@C-@ +7
"K281M??-L /@C@ +"
18 W'&96 +
OOOOOOOKF +
OOOOOOO K +
96318 +
4864
6.2 Inverse Rata Die Implementation Examples
6.2.0 Notation
[x]K ":":)8:+#B)DK)' ##" #
?:+#2C2FF@)
INT(x)KB:D6'9*+# $"")
FIX(x)K %:> )8:+#81M?)@K
x\yK81M?:C@
6.2.1 Rata Die Number to Gregorian Date
) ' ##>H##4; ""33%3)1
# )
PK3F-7
4KP)
K16'?4C-7/)@
K16'?C/@
K16'??F4@C-7)@
2KFP16'?-7)L@
K81M??L2F/7@C-@
"K281M??-L /@C@
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o' ++"##"% >"E +#)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+#> #++
#)#> + +#)
) ' ##>H##4; ""33%3)1
)
PK3F-7
&KLP
K16'?&C-7/@
K16'?C/@
4964
K16'??LF&@C-7@
2KFP-7L16'?C/@
K81M??L2F/7@C-@
"K281M??-L /@C@
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o' ++"##"% >"E +#)
o' %+#"%"$3W
E)
o# 81M??L2F/7@C-@"81M??-L/@C@#:+
":"##+#)
o.##+# #)
-) ' ##>H##4; ""33%3)1
"$" +"$%+>)
LLLL06164LLL#$#"3 H#-? E@)
PK3F-7
&KLP
K&N-7/@
K.&18'14&'?@
K?LF&@@N-7
2KFP-7L.&18'14&'?@
K.&18'14&'??-L2F/@/@
"K2.&18'14&'??L@@
18 W'&96
OOOOOOOKF
OOOOOOO K
96318
296'.*
o#$#"3 -7? E@)
o# .&18'14&'??-L2F/@/@".&18'14&'??L@@#
:+ ":"##+#)
5064
/) <.121+#%# *
6*S"-%?#@"U""%#+#
.G?".(64.(64 .16'949".16'949@
A16G'*"K36%
AG'G'*4 ""
A""#
PSK"F-7A35
4UKPS)U
SK16'?4UC-7/)U@A> #
SKS16'?SC/U@A5#"> #)
K16'??4UFS@C-7)U@
2SKPSFS16'?-7)L@A"
K?L2SF/7@N-
"K2S??-L /@N@
18 W'&96A$ 5
OOOOOOKF
OOOOOO K
96318A$ 5
963.G
) <.121+#%1 $*
.G?".(64.(64 .16'949".16'949@A16G'*"K
36%AG'G'*4 ""
ALLL06164LLL6(;!(13183W-7? E@
A16G'*"K5#36%
AG'G'*4 ""
PSK"F-7A3
&SKLPS
SK&SN-7/A> #
SKSSN/A"I" 5#"> #
K?LSF&S@N-7
2SKSFPS-7LN/A"
K?L2SF/7@N-
"K2S?-L /@N
18 W'&96A$ 5
OOOOOOOKF
OOOOOOO K
96318A$ 5
963.G
5164
7. Day of the Week
7.1 Day of the Week Algorithms
1 $" % 7+" " >=
##>*
."
"
'"
- 0""
/ ' "
8"
7 ."
4$ %"?) @> ":+"5#36%53?#+
)@ " >=H#
?16'?53F)@@"#
1> %>+# "#"+#
)6# "#+#" #+$>
$)A!#:+#+# %
+%#)
1 #+ 5#3%"% "?$""
E@+ +$")1":+" 5#3%"
" >=H#*?16'?53F@@"#)
8:+#
8"3%-53///
."5 53///)
."553//
16'?///F@K16'?///)F)@K//7
"//7"K?-LF7@"K7?."@
5264
7.2 Day of Week Implementations
' ##># $ " >=%?."K@$43)
) ' ##><.12+#%$#"##43+ >"
# +#)
.G>=?">.16'949.(64.16'949".16'949@
TK
SK
18TQ-'&96
OOOOOOSKS
OOOOOOTKTF
96318
">K?"F?-LT/@NF16'?-7)ULS@16'?SL)@F16'?SL)@F@3
18">Q'&96O
OOOOOO">K">F
96318
963.G
) ' ##><.12+#%$#"##43
)1
.G>=?">.16'949.(64.16'949".16'949@
TK
SK
18TQ-'&96
OOOOOOSKS
OOOOOOTKTF
96318
">K?"F?-LT/@NF-7LSFSN/SNFSN/F@3
963.G
-) +#!#%
.%530=?I"3%#@
A16G'*I"K5#36%
AG'G'*" +#%#">
TK1?I"F)@"
1TQ' TKTF
">)2+K>=?T@
9".%
/) '+# "
>="6KBJ."JJ"JJ'"JJ0""JJ' "JJ8"JJ."JD
>="K??536F@T@
+?J>="KJ>="6B>="D@
5364
5464
8. Di+erence Between Dates
2## "%>>" ":+"5#36%
+#= "%> 5#36% ") # $
+$+ $)2%= # +++
#" " 45#)1% " #"
#" # +#+%#)
9. (year, ordinal) to JDN
' ""#5#36% >")' "##>#:# 4
536:+ >= ""H#" ##>+#)1+#
>
M=<-
=
M=M+
"
Y=Y−
"> $$#-
(
-∗M−/
)
¿=
(
-∗-−/
)
¿=-7
0
)
)+-7=//).
& #" )6
CC+# " 16'?@" ""
?@+# 81M?@" ")
";"536?"#@*
JJJ?"#@5#36%JJJ
K
?"#F-7LFCC/CCFCC/F//)@
5564
10. JDN to (year, ordinal)
' 5#36%?"#@# "#> 5364#
> "+ ## )' " "I"5"
"I"+"+> #+)& +#
# )
6
CC+# " 16'?@" "
?@+# 81M?@" ""
T+# "#)
"536;"?536@*
JJJ5#36%""#JJJ
'K536)
PK'CC
K'P
4KP)
K4CC-7/)
KCC/
K??F4@CC-7)@
2KFP?-7)L@CCF
T/*U#+,
2FK
2W-7*
2K-7
FK
#T*U#+,"
2FK7
2W-77*
2K-77
FK
#T/*U#+,-"
2FK
2W-7*
2K-7
FK
#*U#+*#
2FK7
2W-77*
2K-77
FK
?2@
5664
11. Additional Proofs
11.1 Proof of Meeus' Julian Day Number to Gregorian Date
algorithm
1Astronomical Algorithms+7-5$ # ?##@
PK81M?53F)@
K53F)P
4K81M??P77)@C-7/)@
KPFF481M?4C/@
KF/
2K81M??)@C-7)@
3K81M?-7)L2@
9K81M??3@C-)7@
3 K381M?-)7L9@F
19
OOOOOO K9
OOOOOO;K2/7
#
OOOOOO K9-
OOOOOO;K2/
"
' ##> > "$"# +$"" 5#3%
H#7) "8%)/ +#+4#")
Proof that the year is correct
PK81M?53F)@K81M?53F)@FK81M?53)@F
PK81M?53))@F)F
PK81M?53)@F)
1>$
4K81M??P77)@C-7/)@
.16'?53)@ P "$"# >>
4K81M??PF)77)@C-7/)@
> P "$"# )
4K81M??PF)77)@C-7/)@
4K81M??P/7)@C-7/)@
4K81M??P/7)@C-7/)@
K81M??P/L-7/))@C-7/)@
K/F81M??P)@C-7/)@
5764
9:+" P "$"# >$
KPF)FF481M?4C/@
"%">
KF/
> $
KPF)FF481M?4C/@F/
> > %"> 4%
KPF7/F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@
"
2K81M??)@C-7)@
2K81M??PF7/)F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@@C-7)@
2K81M??PF/7L-7))F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@@C-7)@
2K/7F81M??P)F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@@C-7)@
##%/72+ "$"# > VK)"VK)' /7$"+
"I "+"+ %)
Proof that the month is correct
' ##> > ##H$# "$"# )1>$
9K81M??3@C-)7@
' +$$ JPJ" "$"# *
KPF7/F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@
"
3K81M?-7)L2@
%$
9K81M??PF7/F81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@
81M?-7)L2@@C-)7@
.2 +#/73"+#/7L-7)K).%
:+9"2A+ $
9AK81M??PFF81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@81M?-7)L2A@@C-)7@
6
?PF81M??P)@C-7/)@81M?81M??P)@C-7/)@C/@81M?-7)L2A@
" ##
5864
81M??F@C-)7@
' $# %F%
FK81M??F@C-)7@
K81M??F)-@C-)7@
K81M??F)-@C-)7@
K81M??L)-7F)7@@
" +"$"# )1$ #+
$$#%>)--/")7/7-)
' 9 F$# "I" $ "
#" 5)
Proof that the day is correct
1>+$# > 81M?-)7L9@ %" +" ).3
%"
3 K381M?-)7L9@F
11.2 Proof of Explanatory Supplement Gregorian to Julian
Day Number algorithm
8" 4#"The Explanatory Supplement to the Astronomical Almanac
+7/$ $# 43?6$%-/-@$5#36%*
?#$#"53W"53"% "@
(K53F77
6K?/L(@C/7
(K(?/7L6F-@C/
1K?/L?(F@C/7
(K(?/7L1@C/F-
5K?L(@C//
3K(?//L5@C
(K5C
K5FL(
;KL?6/@F1F(
2$ "$%#" %#"*
(K53F77
6K?/L(@C/7
(K(?/7L6F-@C/
1K?/L?(F@C/7
(-K(?/7L1@C/F-
5964
5K?L(-@C//
3K(-?//L5@C
(/K5C
K5FL(/
;KL?6/@F1F(/
G $#(6%>*
6K?/L?53F77@@C/7
6K?/L53F/L77@C/7
6K?/L53F/7@C/7
6K?/L53F/7@C?-7)/L/@
6K?53F77@C?-7)/L@
6K?53)F)F77@C?-7)/L@
6K?53)F7)@C?-7/)@
6K?53)F7))@C-7/)
6K?53)F/L-7/))@C-7/)
53 #+"? # @ +>4")' 53%
+ "" "> 16'?53@)+")
2$5#36% + "$
6K?53)F))F/L-7/))@C?-7/)@
6K?53))F/L-7/))@C?-7/)@
6K/F?53)))@C?-7/)@
6/KU+"
(K(?/7L6F-@C/
(K(?-7)/L/L6F-@C/
(K(-7)/LL6)
(K53F77K?53))F/L-7/))@
(K(-7)/LL6)
(K?53))F/L-7/))@-7)/LL6)
(K?53))F/L-7/))@-7)/LL6)
G $#6
(K?53)))@-7)/LL??53)))@C?-7/)@@
(# %"#> %" > #+"
%")
1K?/L?(F@C/7
1K?/L?(F@C?-7)L/F@
1K??(F@C?-7)FC/@
1K% "+$# > # "$#+)
(-K(?/7L1@C/F-
(-K(?/L-7)L1@C/F-
(-K(-7)L1F-
6064
5K?L(-@C//> 5K
5K?L?(-7)L1F-@@C//
5K?L?(-7)L1@FL-@C//
5K?L?(-7)L1@F/@C//
5K?L?(-7)L1@F/@C//
5K)-7---L?(-7)L1@F)-/--
.(# %"#% "##+""
-7)L1 %" ##
?(-7)L1@K"
5K)-7---L?"@F)-/--
5K)-7---L?"@F)-/--)-7---
5K)-7---L?"@F)-
"5K
K)-7---L?"@F)-
K)-7---L?"@F)-
' +# +$#"$" $" %)& #+
)-7---" ;+> )///7)//7-)
3K(-?//L5@C
3K(-?//L? @@C
3K(-??//L //L@@C
3K(-??//L //@@C
3K(-81M?-)L 7)@
3K?(-7)L1F-@81M?-)L 7)@
.(# %"#% "##+""
-7)L1 %" ##
?(-7)L1F-@K"F-K"F-)
3K"F-81M?-)L 7)@
3K"81M?-)L )@
> > "$#+
81M?-)L )@
$ %" +" )1
#+K-) ;+%>
)//7/--)/-
(/K5C
5K (/K -/
6164
8##$5)
5FK
"% %-/)
'
K5FL(/
6/KU+"
1K"#
""" -/
;KL?6/@F1F(/
11.3 Proof regarding [I/365.25]
' ##> > B1C-7)DKB1C?-7)FC/@D
+$""1#+#/"# -7)L"
1#+#/
B1C-7)DKB1C?-7)FC/@DF
(
1K-7)LVF
> V"#"
QQ-7)
.1"V#%#+#)
B1C-7)DKB??-7)LVF@C-7)DKV
B1C?-7)FC/@D
KB?-7)LVF@C?-7)FC/@D
KB?-7)LVF@C-7)D
KB-7)C-7)LVFC-7)D
KB)---LVFC-7)D
KB?FF)---@LVFC-7)D
KB?F)7//7/@LVFC-7)D
KBV)7//7/LVFC-7)D
KVFB)7//7/LVFC-7)D
KVFBVC/7FC-7)D
6>
BVC/7FC-7)DK
+$""
K"
QVQ/7
6264
"
BVC/7FC-7)DK
+$""
QQ-7)
""V)(A#= > K)*
QVC/7F)C-7)Q
QVC/7F)7//7/7Q
)7//7/7QVC/7Q)7//7/7
)7//7/7QVC/7Q)----
QVQ/7
/7QVQ
6>W)"V+$%$# )'
B1C-7)DKB1C?-7)FC/@D
+$""1#+#/"# -7)L"
1#+#/
B1C-7)DKB1C?-7)FC/@DF
11.4 Proof of 3 useful identities
' ##>"+$%#>*
) ?/7L?;F/@@N/K81M?-7)L;@F-
) -7L?@@NK81M?-)-------L)77777777@F-
-) ?-L??;F/@N@@N/K81M?;C@F81M?;C/@-7
)
?/7L?;F/@@N/
K81M??/7L?;F/@@C/@
K81M???/7C/@L?;F/@@@
K81M??-7)L?;F/@@@
K81M?-7)L;F-7)L/@
K81M?-7)L;F-@
K81M?-7)L;@F-
)
.-7L?@CK7)77777777
"-7CK-)-------
-7L?@@N
K81M?-)-------L7)77777777@
K-F81M?-)-------L)77777777@
6364
-)
?-L??;F/@N@@N/K?-L?81M?;CF/@@@N/
K?-L?/F81M?;C@@@N/
K??/F-L81M?;C@@@N/
K?81M?/C/F-L81M?;C@C/@@
K?81M?-7)F-L81M?;C@C/@@
K?-7F81M?)F?-C/@L81M?;C@@@
K-781M?)F??C/@@L81M?;C@@
K-781M?)?C/@L81M?;C@F81M?;C@@
K-781M?)?C/@L81M?;C@F81M?;C@@
K-781M?)81M?;C/@F81M?;C@@
K-781M?)@F81M?;C/@81M?;C@
K81M?;C@F81M?;C/@-7
6464
12. Revision List
!)-
'".+%-
.),,/ #%)""":YQ'&96Z
2* $%="$% #) #>
!-
'" -
.$Y18Q-'&96PK;9(.9PK;ZY18Q-'&96KFZ>#
" #) Y18Z
!-/."%
o""" "5364"4536
o""" "?"#@536"536?"#@' =5%
"$#$?"#@%"")
o""" ">="##
o+
"-))))$"+++:
8*' %""%+;# H#-7L;FB;C/D
B;CDFB;C/D++:#H#-7L;F;C/;CF;C/K-7)/
$#%# )
'*' %""%+;# H#-7L;FB;C/D
B;CDFB;C/D++:#H#-7L;F;C/;CF;C/K;L?-7FC/C
FC/@K;L-7)/ $#%
# )
o7 "#
8*:
'*:
o+:"
o"""%#
!/
o2"?"#@536 " >" >"$"4
536# )' =5%% )
o8:"+# "
o"""++ $#
B963832G96'D