[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: orekit-users@orekit.org*Subject*: Re: [Orekit Users] Time question - julian date*From*: MAISONOBE Luc <luc.maisonobe@c-s.fr>*Date*: Sat, 28 May 2011 18:54:28 +0200*In-reply-to*: <BANLkTikQK135ndo87AHQ+QbJhED8MAEsjw@mail.gmail.com>*References*: <BANLkTik8dg_k_D-XN+_RK-9iAyz9xWs+ZQ@mail.gmail.com> <BANLkTi=d54OgC+v0jJ-N3dghAA3kNgeRHA@mail.gmail.com> <BANLkTin+i5RLbsAHY3p09KE2HAqUXNR+Zg@mail.gmail.com> <BANLkTik2BLdqDhUDgG8d0_Us0HczFTaakA@mail.gmail.com> <20110527191625.37794qngq5munh49@messagerie.si.c-s.fr> <BANLkTikQK135ndo87AHQ+QbJhED8MAEsjw@mail.gmail.com>*User-agent*: Internet Messaging Program (IMP) H3 (4.3.9)

beowulf zhang <beowulf.zhang@gmail.com> a écrit :

The absolute class not have the constructor: AbsoluteDate t = new AbsoluteDate(DateComponents.JULIAN_EPOCH, my_jd, utc);

Ooops, sorry, it should read: AbsoluteDate t = new AbsoluteDate(DateComponents.JULIAN_EPOCH, utc).shiftedBy(my_mjd);

I use the code: DateComponents dc = new DateComponents(DateComponents.JULIAN_EPOCH, 2456413); TimeComponents tc = new TimeComponents(0.5*86400); AbsoluteDate jdEpoch = new AbsoluteDate(dc, tc, utc); but I get: 2013-04-30T12:00:00.000 not 01-May-2013 00:00:00 could you tell me the reason?

I agree this is weird, but all these epochs are weird.

best regards, Luc

2011/5/28, MAISONOBE Luc <luc.maisonobe@c-s.fr>:Petrus Hyvönen <petrus.hyvonen@gmail.com> a écrit :Hi, Haven't managed to try that algorithm, but downloaded the SPG4 package from Vallado, and I get same Julian Date there as my previous algoritm. If I create a own date reference on: ad_jd = AbsoluteDate(-4712,01,01,12,00,00.000,utc) and use; epoch_date=AbsoluteDate(ad_jd,my_jd,utc) I get conversions from julian date to .. time ... same as the Vallado routines. Why is orekit using a reference point at -4712-01-01T11:59:27.816 ? Is it different timescales?Yes, Orekit uses the TT time scale for this referene date. In fact, julian day is mainly used only as a number of day reference, and the time is added later, and can theoretically be expressed in different time scales, mostly TT or UTC. This means that simply saying a date is 2455709.29166667 is ambiguous, one should say in which time scales the fractional part is considered. As the other reference epoch are precisely defined in TT (J2000 is the best example), and as TT is the most widely used time scale for defining references in IAU recommendations, we have chosen in Orekit to use the same TT time scale for all these references. This is specified in the javadoc for J2000 (see <https://www.orekit.org/static/apidocs/org/orekit/time/AbsoluteDate.html#J2000_EPOCH>) but obviously it is not explained in the javadoc for JULIAN_EPOCH, my bad. We could perhaps provide two reference epoch, one JULIAN_EPOCH_TT and one JULIAN_EPOCH_UTC, but this may also confuse users. Another way to achieve what you want could be something like: AbsoluteDate t = new AbsoluteDate(DateComponents.JULIAN_EPOCH, my_jd, utc); LucBest regards /Petrus On Fri, May 20, 2011 at 5:53 PM, beowulf zhang <beowulf.zhang@gmail.com>wrote:This algorithm is in the JAT. link is http://jat.sourceforge.net/ 2011/5/20, beowulf zhang <beowulf.zhang@gmail.com>: > I can't find the reason of this question, but I give you a piece of > program that could give correct answer. > > /** Create a CalDate object using MJD. From Montenbruck C++ code. > * @param mjd Modified Julian Date. > */ > public CalDate(double mjd){ > long a,b,c,d,e,f; > double Hours,x; > > // Convert Julian day number to calendar date > a = (long)(mjd+2400001.0); > > if ( a < 2299161 ) { // Julian calendar > b = 0; > c = a + 1524; > } > else { // Gregorian calendar > b = (long)((a-1867216.25)/36524.25); > c = a + b - (b/4) + 1525; > } > > d = (long)( (c-122.1)/365.25 ); > e = 365*d + d/4; > f = (long)( (c-e)/30.6001 ); > > long temp = (long)(30.6001*f); > this.Day = (int)(c - e - temp); > temp = (long)(f/14); > this.Month = (int)(f - 1 - 12*temp); > temp = (long)((7+Month)/10); > this.Year = (int)(d - 4715 - temp); > > Hours = 24.0*(mjd-Math.floor(mjd)); > > this.Hour = (int)Hours; > x = (Hours-Hour)*60.0; > this.Min = (int) x; > this.Sec = (x-Min)*60.0; > this.DOY = day2doy(this.Year, this.Month, this.Day); > } > > > 2011/5/19, Petrus Hyvönen <petrus.hyvonen@gmail.com>: >> Hi, >> >> This maybe is a FAQ but anyway... >> >> I'm trying to create an absolute date based on a julian date created >> in >> another software. >> >> My julian date is 2.456413500000000e+006, corresponding to 01-May-2013 >> 00:00:00 UTC according to that software and some web conversion i checked >> it >> with. >> >> with orekit i do: >> ad_jd = AbsoluteDate.JULIAN_EPOCH >> ad_jd = >> -4712-01-01T11:59:27.816 >> >> AbsoluteDate(ad_jd,t*24*3600) >> ans = >> 2013-04-30T23:58:53.816 >> >> There must be some kind of time scale or different references here I >> suppose, how can convert this properly? >> >> Best regards >> /Petrus >> >-- _____________________________________________ Petrus Hyvönen, Uppsala, Sweden Mobile Phone/SMS:+46 73 803 19 00---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.

---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.

**References**:**[Orekit Users] Time question - julian date***From:*Petrus Hyvönen <petrus.hyvonen@gmail.com>

**Re: [Orekit Users] Time question - julian date***From:*Petrus Hyvönen <petrus.hyvonen@gmail.com>

**Re: [Orekit Users] Time question - julian date***From:*MAISONOBE Luc <luc.maisonobe@c-s.fr>

**Re: [Orekit Users] Time question - julian date***From:*beowulf zhang <beowulf.zhang@gmail.com>

- Prev by Date:
**Re: [Orekit Users] Time question - julian date** - Next by Date:
**[Orekit Users] My EventDetector class can't correct detecting event?** - Previous by thread:
**Re: [Orekit Users] Time question - julian date** - Next by thread:
**[Orekit Users] My EventDetector class can't correct detecting event?** - Index(es):