|


Converting Gregorian Date to Gregorian DaysDate: 02/27/2003 at 14:09:39 From: Logan Subject: Converting Gregorian Date to Gregorian days I'm trying to convert a Gregorian date (e.g. Feb. 10, 1788) to the number of days that has passed since the implementation of the Gregorian Calender on October 15, 1582 (this being day 1). For example October 17th, 1582 would be day 3, and March 3, 2003 would be day 153542. I've converted the number of days from the year inputted to 1583, and added 1 day for leap years divisible by 4, subtracted 1 day for years ending in 100, and then added 1 day for years divisible by 400, but I am having problems adding the months and days of the month, etc. Any help would be greatly appreciated.
Date: 02/28/2003 at 21:36:27
From: Doctor Fenton
Subject: Re: Converting Gregorian Date to Gregorian days
Hi Logan,
Thanks for writing to Dr. Math. The simplest way I know to do the
calculation you are looking for is to use the Julian Day system. This
is a continuous count of days from January 1, 4713 B.C. and,
surprisingly, it is fairly easy to compute.
The following algorithm is adapted from Jean Meeus' "Astronomical
Formulae for Calculators." In the following, int(x) means the
integer (whole number) part of x: int(4.25) = 4; int(-1.7) = -1; etc.
Given a year YYYY, a month MM, and a day D, if the month is January
or February (M=1 or 2), replace let y = YYYY-1 and let m = M+13.
Otherwise, let y = YYYY and m = M+1.
Compute A = int(y/100), and let B = 2 - A + int(A/4).
Then the Julian Day number JD of this date is
JD = int(365.25*y) + int(30.6001*m) + B + D + 1720995.
For example, for Feb. 28, 2003, YYYY=2003, M=2, and D=28,
so y = 2002, m=15, A = 20, and B = -13, so
JD = int(365.25*2002) + int(30.6001*15) + 28 - 13 + 1720995
= int(731230.5) + int(459.0015) + 28 - 13 + 1720995
= 731230 + 459 + 28 - 13 + 1720995
= 2452699
while for July 4, 2001, YYYY=2001, M=7, and D= 4, so y = 2001,
m = 8, A = 20, and again B = -13. Then
JD = int(365.25*2001) + int(30.6001*8) + 4 - 13 + 1720995
= int(730865.25) + int(244.8008) + 4 - 13 + 1720995
= 2452095.
Day 1 of the Gregorian calendar was Oct. 15, 1582, whose JD is
JD = 2299161,
so the JD of the last day of the Julian calendar was
JD = 2299160.
So, compute the JD of the day you are interested in, and subtract
2299160, and that will give you the number of days since the beginning
of the Gregorian calendar.
If you use this on historical dates, remember that the Gregorian
calendar wasn't adopted everywhere on Oct. 15, 1582. It wasn't
adopted in British colonies until about 1752, and in Russia after the
1917 revolution (which is why it is called the "October Revolution,"
even though it occurred in November in the Gregorian calendar).
This formula only works for Gregorian dates. If you have a Julian
calendar date, i.e. before Oct. 15, 1582 (the previous day had the
Julian calendar date Oct. 4, 1582, you set B = 0). There's another
correction for years B.C., but all the Gregorian rules are
incorporated in this formula.
If you have any questions, please write back and I will try to
explain further.
- Doctor Fenton, The Math Forum
http://mathforum.org/dr.math/
Date: 06/06/2003 at 06:36:55 From: David Subject: What about BC? Is there an additional correction for years B.C.? -David Date: 06/06/2003 at 17:36:35 From: Doctor Fenton Subject: Re: What about BC? Hi David, In this system, 1 AD is the year 1, 1 BC (or BCE) is the year 0, and 2 BC (BCE) is the year -1, etc. For negative years, Meeus says to replace the term int(365.25*y) by int(365.25*y - .75) . To test your implementation, May 29 in the year -584 should be JD 1507900.5 (Meeus actually uses May 28.63 to get JD 1507900.13 .) If you have any questions, please write back and I will try to explain further. - Doctor Fenton, The Math Forum http://mathforum.org/dr.math/ |
Search the Dr. Math Library: |
[Privacy Policy] [Terms of Use]


Ask Dr. MathTM
© 1994-2008 The Math Forum
http://mathforum.org/dr.math/