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

Re: [Orekit Users] Time question - julian date



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);

Luc


Best 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.