Modified Julian Data(简化儒略日)

儒略日(Julian Day)”儒略历(Julian Calendar/Julian Date)”不同。 儒略历是 Julius Caesar45 BC发明的。一年有12个月,大月31日,小月30日,平年2月有28,日闰年2月则有29日,平均每年有365.25日。到158210月由格勒哥里十三世(Gregory XIII)改革成为格勒哥里历(Gregorian calendar),取消1582105日至15821014日这10日及取消400年内00年尾的3个闰年,使一年的平均日数变成365.2425日,更接近于准确的回归年365.2422日。
儒略日是由Joseph Justus Scaliger1540-1609)发明的,名称可能是取自他的父亲Julius Caesar Scaliger1484-1558)。Scaliger尝试将所有历史日期用一个系统表述。为被免用负数表达过去的年份,他选择一个年代久远的年份作为儒略日的起点。他依据以下3种周期订定出儒略日的儒略周期(Julian Cycle)及起点。
1. 28年为一周期的太阳周期(solar cycle) : 经过一周期,星期的日序与月的日序会重复。
2. 19年为一周期的朔望周期(Metonic cycle) :经过一周期,阴历月年的日序和月相重复。周期内用 Golden Number 来表示序号。
3. 15年为一周期的古罗马律会(indiction cycle) :此为罗马皇帝君士坦丁所颁的课税周期,每15年重订财产价值以供课税。
Scaliger将这三个周期的最小共倍数(28 x 19 x 15=7980)作为儒略日(Julian Day)的周期。至于儒略日的起点Scaliger选择了一年使这三个周期均等于1。他知道1BC 这一年的Solar cycle number等于9Metonic cyle number Golden number 等于1,及Indiction cycle number等于3。他发现(1,1,1)发生在公元前471311日,就选择了一年作为起点。天文学家经常用儒略日来赋予每天一个唯一的数字,方便追朔日期。 这就是所谓的儒略日(JD)。通常天文及航海以中午12时为一日的开始,儒略日亦是从世界时(Universal Time) 中午12时开始。 JD0指定为4713 BC 一月一日正午UTC4713 BC一月二日正午UTC24小时。


儒略日数的计算(Julian Day Numbers)
儒略日起始时间为4713 BC,公元后的年数(AD/CE)可以简单地加上4713成为儒略年数(Julian Period)。例如2003 AD年会得出6716。公元前(BC/BCE)要表示成负数的公元后的年数。因为公元前1年(1BC)等于0AD,因此要将BC/BCE的年数减1然后取负值。例如868BC年会得出 –867AD。但是如果4713 BC不是第一年而是设为0年,计算时会简化,对于BC/BCE的年只须加4712而不是4713。例如2003AD年会得出6715。这种计法称为Scalinger Year。另外在计算儒略日数时年是以31日开始,一月及二月被当作上一年的第1314个月。
首先将年份(Scalinger Year)徐4。例如2003215日的Scalinger Year2002 (一月及二月被当作上一年的第1314个月) + 4712 = 67146714/4 = 16782,意思是4年循环的儒略历有1678个而本循环(0-3)中等于2。暂时不理闰年所加的日数,儒略历日数= 1461 x 1678 + 2 x 365 = 2,452,288

世纪
修正
1582
-10
1600
1700
-11
1800
-12
1900
-13
2000
将以上两项修正加在总数成为儒略日数 (Julian Day Numbers)  。所以 2003 2 15 =2,452,640 + 59 – 13 = 2,452,686 JD 。最后儒略日从中午 12 时开始,对应民用计算日期由凌晨开始多了半日所以再减 0.5 成为 JD 2,452,685.5
由儒略日数 (Julian Day Numbers) 转换成格勒哥里历( Gregorian calendar
转换儒略日数 (Julian Day Numbers)  成格勒哥里历( Gregorian calendar )只是倒转求儒略日数过程。例如将 JD 2,452,686 转成格勒哥里历。
首先将 2,452,686 减去 4713 BC1 月至 2 月的 59 日成为 2,452,627 。将这个数徐以 1461 1678 余数是 1069 ,再将余数 1069 数徐以 365 2 余数 339 1678 x 4 = 6712 加上这个商 2=6714 就是 Scalinger Year ,将 Scalinger Year  减去 4712 =2002 年。余数 339 对应以 3 月为首的累积日数表中的已二月,所以年份要加一成为 2003 年。余数 339 减去格勒哥里历修正日数 339 – (–13) = 352 ,将 352 减去二月的累积日数 337 =15 ,这就是日。结果是 2003 2 15 日。

 


其它儒略日数(Julian Day Numbers)计算方法
计算儒略日数(Julian Day Numbers)还有许多其它公式,现列举于下作参考。
公式一
假设 a = (14-月份)/12
       y = 年 + 4800 - a
           m = 月份 + 12a - 3
             d = 日 
格勒哥里历(Gregorian calendar)的日期:
JD=d+(153m+2)/5 + 365y + y/4 – y/100 + y/400 - 32045
儒略历(Julian calendar)的日期:
JD = day + (153m+2)/5 + 365y + y/4 - 32083
公式二 
假设 y = 年份
       m = 月份 
        d = 日 
JD = (1461 * (y + 4800 + (m - 14) / 12)) / 4 +
        (367 * (m - 2 - 12 * ((m - 14) / 12) )) / 12 -
        (3 * (( y + 4900 + (m - 14) / 12 ) / 100)) / 4 +  
        d - 32075
由儒略日数(Julian Day Numbers)转换成格勒哥里历(Gregorian calendar
L = JD + 68569
N = ( 4 * L ) / 146097
L = L - ( 146097 *N + 3 ) / 4
I = ( 4000 * ( L + 1 ) ) / 1461001
L = L - ( 1461 * I ) / 4 + 31
J = ( 80 * L ) / 2447
D = L - ( 2447 * J ) / 80 = Day
L = J / 11
M = J + 2 - ( 12 *L ) = Month
Y = 100 * ( N - 49 ) + I + L = Year
公式三
假设 y = 年份
       m = 月份 
           d = 日 
1. 如果 m 小于于或等于2, m = m + 12 而 y = y – 1 
2. c = 2 – y/1000 + y/400 (乘或徐数时,取整数,舍弃点数)
3. JD = 1461 * ( y+ 4716 ) / 4 + 153 * (m + 1) / 5 + d + c –1524.5 (乘或徐数时,取整数,舍弃点数)
由儒略日数(Julian Day Numbers)转换成格勒哥里历(Gregorian calendar
Z = JD+0.5 
W = (Z – 1867216.25) / 36524.25
X = W / 4
A = Z+1+W–X
B = A+1524
C = (B–122.1) / 365.25
D = 365.25xC
E = (B–D) / 30.6001
F = 30.6001 * E
日 = B – D– F
月份 = E – 1 or E – 13 (要小于或等于12的数字)
年份 = C–4715(如果月份是一或二月)其它月份则用C– 4716
公式四
假设   Y = 年份
        M = 月份 
         D = 日 
JD = (D - 32075 + 1461 * (Y + 4800 + (M - 14) / 12) / 4 + 367 * (M - 2 - (M - 14) / 12 * 12 ) / 12 - 3 * ((Y + 4900 + (M - 14) / 12) / 100) / 4)   (乘或徐数时,取整数,舍弃点数)
公式五
假设 y = 年份
       m = 月份 
            d = 日 
     如 m > 2 ; m = m – 3 
            否则 m = m + 9 ; y = y - 1
            c = y / 100 
            ya = y - 100 * c
            JD = (146097 * c) / 4 + (1461 * ya) / 4 + (153 * m + 2) / 5 + d + 1721119   (乘或徐数时,取整数,舍弃点数)


简化儒略日数(Modified Julian Day Number)
从过去的150年到现在,儒略日的数值起码是7位数字。1957Smithsonian Astrophysical Observatory将儒略日数值减去2,400,000.5并命名为简化儒略日数 (Modified Julian Day Number),简称MJD。简化JD有两个目的:
1) 日期由午夜而不是中午开始。
2) 儒略日的数值由7位数字减为5位数字,节省计算机储存空间。 
3)JD 2,400,00018581116日。MJD 2 = 0相当于18581117日的凌晨。


利连日数(Lilian Day Number)
概念上与儒略日一样,它是由格勒哥里历(Gregorian calendar)改革的第一日作起点,即15821015日。利连日数(Lilian Day Number)是以天文学家Aloysius Lilius命名,他是天主教教皇格勒哥里十三世(Gregory XIII)的历法顾问,亦是格勒哥里历(Gregorian calendar)的主要发明者之一。 
利连日数(LJD)与儒略日数(JD)有如下的关系 :
LDN = JDN - 2,299,160

Julian day - Definition

The Julian day or Julian day number (JDN) is the number of days that have elapsed since 12 noon Greenwich Mean Time (UT or TT) on Monday, January 1, 4713 BC (in the proleptic Julian calendar; or November 24, 4714 BC in the proleptic Gregorian calendar). The Julian day system was intended to provide astronomers with a single system of dates that could be used when working with different calendars and to unify different historical chronologies.

Contents [hide]
1 Julian Date
2 Alternatives
3 History
4 Calculation
5 See also
6 References
7 External links

Julian Date

The Julian Date (JD) is the Julian day number plus the decimal fraction of the day that has elapsed since noon. Historical Julian Dates were recorded relative to GMT or Ephemeris Time, but the International Astronomical Unionnow recommends that Julian Dates be specified in Terrestrial Time, and that when necessary to specify Julian Dates using a different time scale, that the time scale used be indicated when required, such as JD(UT1). The fraction of the day is found by converting the number of hours, minutes, and seconds after noon into the equivalent decimal fraction.

The term Julian date is also used to refer to:

  • Julian calendar dates
  • ordinal dates (day-of-year)

The use of Julian date to refer to the day-of-year (ordinal date) is usually considered to be incorrect.

Alternatives

  • The Heliocentric Julian Day (HJD) is the same as the Julian day, but adjusted to the frame of reference of the Sun, and thus can differ from the Julian day by as much as 8.3 minutes, that being the time it takes the Sun's light to reach Earth. The Julian day is sometimes referred to as the Geocentric Julian Day (GJD) in order to distinguish it from HJD.
  • Another version of the Julian day, introduced by Peter Meyer, is the chronological Julian Day (CJD), in which the starting point is set at midnight at the beginning of January 1, 4713 BC (proleptic Julian calendar) local time rather than noon UT. Chronographers found the Julian day concept useful, but they didn't like noon as the starting time. So CJD = JD + 0.5 (in the Greenwich time zone, anyway). Note that JD may use Universal Time (UT) or Terrestrial Time (TT), and so it is the same for all time zones and is independent of Summer Time or Daylight-Saving Time (DST). On the other hand, CJD is not, so it changes with different time zones and takes into account the different local DSTs. Users of CJD sometimes refer to the Julian day as astronomical Julian Day (AJD) to distinguish it from CJD.

Because the starting point is so long ago, numbers in the Julian day can be quite large and cumbersome. A more recent starting point is sometimes used, for instance by dropping the leading digits, in order to fit into limited computer memory with an adequate amount of precision.

  • The Modified Julian Day (MJD), introduced by the Smithsonian Astrophysical Observatory in 1957 to record the orbit of Sputnik, is defined in terms of the Julian day as follows:
MJD = JD - 2400000.5
The offset of 0.5 means that MJD started at midnight at the beginning of  November 17,  1858, and that every Modified Julian Day begins and ends at midnight UT or TT.
  • The Reduced Julian Day (RJD) is also used by astronomers and counts days from the same day as MJD, but from noon UT or TT, and thus is defined as:
RJD = JD - 2400000
  • The Truncated Julian Day (TJD) was introduced by NASA for the space program. TJD began at May 24, 1968. Since TJD exceeded four digits on October 10, 1995, some now count TJD from this date in order to maintain a four-digit number. It can be defined as:
TJD = JD - 2440000.5
or
TJD = (JD - 0.5) mod 10000
  • The Dublin Julian Day (DJD) is a count of days from midnight at the beginning of January 1, 1900. The source of the name is unknown. It is used in computer programs, such as Lotus 1-2-3 and Microsoft Excel. In these particular programs, this date is counted as day 1, instead of day 0, because the year 1900 was erroneouslytreated as a leap year.
  • The Lilian day number defines day 1 as October 15, 1582, which was the first day of the Gregorian Calendar. It was named for Aloysius Lilius, the principal author of the Gregorian Calendar.
  • The ANSI Date defines January 1, 1601 as day 1, and is used as the origin of COBOL integer dates. This epochis the beginning of the previous 400-year cycle of leap years in the Gregorian Calendar, which ended with the year 2000.
  • Rata Die is the epoch used in Calendrical Calculations by Edward M. Reingold and Nachum Dershowitz, where day 1 is January 1, 1, that is, the first day of the Christian or Common Era in the proleptic Gregorian Calendar.

History

The Julian day number is based on the Julian Period proposed by Joseph Scaliger in 1583, at the time of theGregorian calendar reform, but it is the multiple of three calendar cycles used with the Julian calendar:

15 ( Indiction cycle) × 19 ( Metonic cycle) × 28 (Solar cycle) = 7980 years

Its epoch falls at the last time when all three cycles were in their first year together — Scaliger chose this because it pre-dated all historical dates.

Note: although many references say that the "Julian" in "Julian day" refers to Scaliger's father, Julius Scaliger, in the introduction to Book V of his Opus de Emendatione Tempore (Work on the Emendation of Time) he states: "Iulianum vocauimus: quia ad annum Iulianum dumtaxat accomodata est" which translates more or less as "We call this Julian merely because it is accommodated to the Julian year". This "Julian" refers to Julius Caesar, who introduced the Julian calendar in 46 BC.

In his book Outlines of Astronomy, first published in 1849, the astronomer John Herschel wrote:

The first year of the current Julian period, or that of which the number in each of the three subordinate cycles is 1, was the year 4713 B.C., and the noon of the 1st of January of that year, for the meridian of Alexandria, is the chronological epoch, to which all historical eras are most readily and intelligibly referred, by computing the number of integer days intervening between that epoch and the noon (for Alexandria) of the day, which is reckoned to be the first of the particular era in question. The meridian of Alexandria is chosen as that to which Ptolemy refers the commencement of the era of Nabonassar, the basis of all his calculations.

Astronomers adopted Herschel's Julian Days in the late 19th century, but using the meridian of Greenwich instead of Alexandria, after the former was made the Prime Meridian by international conference in 1884. This has now become the standard system of Julian days. Julian days are typically used by astronomers to date astronomicalobservations, thus eliminating the complications resulting from using standard calendar periods like eras, years, months, or weeks.

Julian days begin at noon because when Herschel recommended them, the astronomical day began at noon (it did so until 1925). The astronomical day had begun at noon ever since Ptolemy chose to begin the days in his astronomical periods at noon. He chose noon because the transit of the Sun across the observer's meridian occurs at the same apparent time every day of the year, unlike sunrise or sunset, which vary by several hours. Midnight was not even considered because it could not be accurately determined using water clocks. Nevertheless, he double dated most nighttime observations with both Egyptian days beginning at sunrise and Babylonian days beginning at sunset. Thus the astronomical day did not begin at noon to allow all observations of a single night to be in a single day.

Calculation

The Julian day number can be calculated using the following formulas:

All divisions (except for JD) are integer divisions, meaning the remainder in the division is discarded. The months January to December are 1 to 12. Astronomical year numbering is used, thus 1 BC is 0, 2 BC is ?1, and 4713 BC is ?4712. \begin{matrix}a & = & {14 - month \over 12} \\ \\y & = & year + 4800 - a \\ \\m & = & month + 12a - 3 \\\end{matrix}

For a date in the Gregorian calendar (at noon):

\begin{matrix}JDN & = & day + {153m + 2\over 5} + 365y + {y \over 4} - {y \over 100} + {y \over 400} - 32045\end{matrix}

For a date in the Julian calendar (at noon):

\begin{matrix}JDN & = & day + {153m + 2\over 5} + 365y + {y \over 4} - 32083\end{matrix}

For the full Julian Date (divisions are real numbers):

\begin{matrix}JD & = & JDN + {hour - 12 \over 24} + {minute \over 1440} + {second \over 86400}\end{matrix}

The day of the week can be determined from the Julian day number by calculating it modulo 7, where 0 means Monday.

JD mod 7 0 1 2 3 4 5 6
Day of the week Mon Tue Wed Thu Fri Sat Sun

See also

  • epoch
  • epoch (astronomy)
  • era
  • time
  • time scales
  • Decimal time

References

  • Gordon Moyer, "The Origin of the Julian Day System," Sky and Telescope 61 (April 1981) 311-313.
  • Explanatory Supplement to the Astronomical Almanac, edited by P. Kenneth Seidelmann. University Science Books, 1992. ISBN 0935702687

External links

  • Article 'Julian Day Numbers' by Peter Meyer
  • U.S. Naval Observatory Julian Date Converter
  • Julian Day and Civil Date calculator
  • U.S. Naval Observatory Time Service article
  • Outlines of Astronomy by John Herschel
  • International Astronomical Union Resolution 1B: On the Use of Julian Dates
  • Calendrica
  • Another Julian Day calculator with conversions to many other calendars valid from 1 January 100 proleptic Gregorian calendar

Modified Julian Day与年月日时分秒转换C++和MATLAB代码

C++转换函数:

年月日时分秒(支持小数秒)与Modified Julian Day互转
double YmdToMjd(int iYear, int iMonth, int iDay, int iHour, int iMin, double dSec);
void MJdToYmd(double dMJD, int *piYear, int *piMonth,int *piDay, int *piHour,
              
int* piMin, double* pdSec);


MATLAB转换函数:

年月日时分秒(支持小数秒)与Modified Julian Day互转
mjd--Modified Julian Day,可输入数组
function greDate = wzjMjdToGregorianDate(mjd)
greDate---年月日时分秒向量,可输入数组
function mjd = wzjGregorianDateToMjd(greDate)

UTC与当地时互转
utcArr--UTC,可输入数组
function LT = wzjUTCToLT(utcArr,lonArr)
lonArr--当地经度(0~360或-180~180均可),可输入数组
function UTC = wzjLTToUTC(ltArr,lonArr)

Modified Julian Day   年     月  日  时 分 秒
54783.5311154071 2008 11 13 12 44 48.3712005615234
54783.5311443393 2008 11 13 12 44 50.8709030151367
54783.5311725482 2008 11 13 12 44 53.3081970214844
54783.5312007571 2008 11 13 12 44 55.7453994750977
54783.5312296894 2008 11 13 12 44 58.2452011108398
54783.5312578983 2008 11 13 12 45 0.682403564453125
54783.5312868305 2008 11 13 12 45 3.18219757080078
54783.5313150394 2008 11 13 12 45 5.61940002441406
54783.5313439716 2008 11 13 12 45 8.11920166015625
54783.5313721805 2008 11 13 12 45 10.5563964843750
54783.5314011127 2008 11 13 12 45 13.0560989379883
54783.5314293216 2008 11 13 12 45 15.4934005737305
54783.5314575305 2008 11 13 12 45 17.9306030273438
54783.5314864628 2008 11 13 12 45 20.4303970336914
54783.5315146717 2008 11 13 12 45 22.8675994873047
54783.5315436039 2008 11 13 12 45 25.3674011230469
54783.5315718128 2008 11 13 12 45 27.8046035766602
54783.5316000217 2008 11 13 12 45 30.2418975830078
54783.5316289539 2008 11 13 12 45 32.7416000366211
54783.5316571628 2008 11 13 12 45 35.1789016723633
54783.5316860950 2008 11 13 12 45 37.6785964965820
54783.5317143040 2008 11 13 12 45 40.1158981323242
54783.5317432362 2008 11 13 12 45 42.6156005859375
54783.5317714451 2008 11 13 12 45 45.0529022216797
54783.5317996540 2008 11 13 12 45 47.4900970458984
54783.5318285862 2008 11 13 12 45 49.9898986816406
54783.5318567951 2008 11 13 12 45 52.4271011352539
54783.5318857273 2008 11 13 12 45 54.9268035888672
54783.5319139362 2008 11 13 12 45 57.3640975952148
54783.5319421451 2008 11 13 12 45 59.8013992309570

http://www.csgnetwork.com/julianmodifdateconv.html

你可能感兴趣的:(OpenMI)