et2utc |
Table of contents
ProcedureET2UTC ( Ephemeris Time to UTC ) SUBROUTINE ET2UTC ( ET, FORMAT, PREC, UTCSTR ) AbstractConvert an input time from ephemeris seconds past J2000 to Calendar, Day-of-Year, or Julian Date format, UTC. Required_ReadingTIME KeywordsTIME DeclarationsIMPLICIT NONE DOUBLE PRECISION ET CHARACTER*(*) FORMAT INTEGER PREC CHARACTER*(*) UTCSTR Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- ET I Epoch, given in ephemeris seconds past J2000. FORMAT I Format of output epoch. PREC I Digits of precision in fractional seconds or days. UTCSTR O Output time string, UTC. Detailed_InputET is the input epoch, ephemeris seconds past J2000. FORMAT is the format of the output time string. It may be any of the following: 'C' Calendar format, UTC. 'D' Day-of-Year format, UTC. 'J' Julian Date format, UTC. 'ISOC' ISO Calendar format, UTC. 'ISOD' ISO Day-of-Year format, UTC. PREC is the number of digits of precision to which fractional seconds (for Calendar and Day-of-Year formats) or days (for Julian Date format) are to be computed. If PREC is zero or smaller, no decimal point is appended to the output string. If PREC is greater than 14, it is treated as 14. Detailed_OutputUTCSTR is the output time string equivalent to the input epoch, in the specified format. Some examples are shown below. 'C' '1986 APR 12 16:31:09.814' 'D' '1986-102 // 16:31:12.814' 'J' 'JD 2446533.18834276' 'ISOC' '1987-04-12T16:31:12.814' 'ISOD' '1987-102T16:31:12.814' If an error occurs, UTCSTR is not changed. Fractional seconds, or for Julian dates, fractional days, are rounded to the precision level specified by the input argument PREC. UTCSTR should be declared to be at least 20 + PREC characters in length to ensure sufficient room to hold calendar strings for modern epochs. For epochs prior to 1000 A.D. at least 24 + PREC characters in length are required to hold the output calendar string. For epochs prior to 1000 A.D. Jan 1 calendar and day of year formats are returned with the era (A.D. or B.C.) attached to the year. For example '877 A.D. MAR 17 13:29:11.829' '471 B.C. Jan 01 12:00:00.000' '471 B.C. 001 // 12:00:00.000' ISO formats do not support the inclusion of an era. For years prior to 1 A.D. an error will be signaled if ISO format has been requested. ParametersNone. Exceptions1) If the format for the output string is not recognized, the error SPICE(INVALIDTIMEFORMAT) is signaled. 2) If PREC is less than or equal to zero, it is treated as zero. If PREC is greater than 14, it is treated as 14. 3) If one of the ISO formats is specified (ISOC or ISOD) but the year corresponding to ET is prior to 1 A.D. on the Gregorian Calendar, the error SPICE(YEAROUTOFRANGE) is signaled. 4) Epochs prior to 15 Oct, 1582 on the Gregorian calendar (the calendar commonly used in western societies) are returned in the "extended" Gregorian Calendar. To convert epochs to the Julian calendar see the SPICELIB routine GR2JUL. 5) This routine does not attempt to account for variations in the length of the second that were in effect prior to Jan 1, 1972. For days prior to that date, we assume there are exactly 86400 ephemeris seconds. Consequently the UTC Gregorian calendar strings produced for epochs prior to Jan 1, 1972 differ from the corresponding TDB calendar strings by approximately 41.18 seconds. (TDB Gregorian calendar strings are produced by the routine ETCAL). 6) If a leapseconds kernel has not been loaded prior to calling this routine, an error is signaled by a routine in the call tree of this routine. FilesA leapseconds kernel must be loaded via FURNSH prior to calling this routine. The kernel need be loaded only once during a program run. ParticularsThis routine handles the task of converting a double precision representation of an epoch to a character string suitable for human consumption. The more general routine TIMOUT may also be used to convert ET to time strings. ExamplesLet the value of ET be -527644192.5403653 ephemeris seconds past J2000. Assuming that the nominal values in the kernel pool have not been altered, the following calls CALL ET2UTC ( ET, 'C', 0, UTCSTR ) CALL ET2UTC ( ET, 'C', 3, UTCSTR ) CALL ET2UTC ( ET, 'D', 5, UTCSTR ) CALL ET2UTC ( ET, 'J', 7, UTCSTR ) produce the following output strings '1983 APR 13 12:09:14' '1983 APR 13 12:09:14.274' '1983-103 // 12:09:14.27400' 'JD 2445438.0064152' respectively. RestrictionsNone. Literature_References[1] J. Jespersen and J. Fitz-Randolph, "From Sundials to Atomic Clocks, Understanding Time and Frequency," Dover Publications, Inc. New York, 1982. Author_and_InstitutionC.H. Acton (JPL) N.J. Bachman (JPL) J. Diaz del Rio (ODC Space) K.R. Gehringer (JPL) J.M. Lynch (JPL) W.M. Owen (JPL) B.V. Semenov (JPL) W.L. Taber (JPL) I.M. Underwood (JPL) E.D. Wright (JPL) VersionSPICELIB Version 3.0.5, 24-AUG-2021 (JDR) Edited the header to comply with NAIF standard. Extended $Files section. SPICELIB Version 3.0.4, 06-APR-2009 (NJB) Header was updated to state that fractional seconds or days are rounded in the output string. SPICELIB Version 3.0.3, 28-JAN-2008 (BVS) Fixed typo in the ISOC example string in $Detailed_Output. SPICELIB Version 3.0.2, 29-JUL-2003 (NJB) (CHA) Various header changes were made to improve clarity and more fully explain the routine's functionality. SPICELIB Version 3.0.1, 14-SEP-2000 (EDW) Added FAILED check after TTRANS call during the calendar "C" format processing to catch failure signal from TTRANS. Lack of this check caused CSPICE based programs to core dump if ET2UTC was called without a leapseconds kernel while error action was set to RETURN. SPICELIB Version 3.0.0, 13-MAR-1996 (WLT) The construction of the numerical components of the output string are now handled by the SPICELIB routine TTRANS. In addition the routine now supports the ISO formats and the era associated with an epoch (B.C. or A.D.) in non ISO formats. SPICELIB Version 2.1.0, 11-JUL-1995 (KRG) Removed some potential compile warnings that could be caused by truncation of double precision values to integers through a direct assignment. The direct assignment has been replaced with a call to the intrinsic function IDINT. SPICELIB Version 2.0.1, 10-MAR-1992 (WLT) Comment section for permuted index source lines was added following the header. SPICELIB Version 2.0.0, 21-MAR-1991 (NJB) (JML) Two bugs involving rounding errors were corrected. One of the bugs caused conversion errors of magnitude as large as 1 second. See $Revisions for details. SPICELIB Version 1.0.0, 31-JAN-1990 (WMO) (IMU) |
Fri Dec 31 18:36:21 2021