utc2et |
Table of contents
ProcedureUTC2ET ( UTC to Ephemeris Time ) SUBROUTINE UTC2ET ( UTCSTR, ET ) AbstractConvert an input time from Calendar or Julian Date format, UTC, to ephemeris seconds past J2000. Required_ReadingKERNEL TIME KeywordsTIME DeclarationsIMPLICIT NONE CHARACTER*(*) UTCSTR DOUBLE PRECISION ET Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- UTCSTR I Input time string, UTC. ET O Output epoch, ephemeris seconds past J2000. Detailed_InputUTCSTR is an input time string, containing a Calendar or Julian Date, UTC. Any input string acceptable to the SPICELIB routine TPARTV are acceptable to UTC2ET. The length of UTCSTR should not exceed 80 characters. Detailed_OutputET is the equivalent of UTCSTR, expressed in ephemeris seconds past J2000. If an error occurs, or if the input string is ambiguous, ET is not changed. ParametersNone. Exceptions1) If the input time string is ambiguous, the error SPICE(INVALIDTIMESTRING) is signaled. 2) 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. FilesNone. ParticularsNote: NAIF recommends the use of STR2ET instead of UTC2ET. This routine handles that task of converting strings representing epochs in the UTC system to ephemeris seconds (TDB) past the epoch of the J2000 frame. Although this routine is intended primarily for the conversion of epochs during the "space age" it may also be used to convert much earlier epochs. However, before using this routine to convert epochs prior to 1972 you must be sure that the assumptions made by in the implementation are consistent with the accuracy of the input calendar string. As noted in the $Exceptions section, this routine does not attempt to account for variations in the length of the second that were used prior to Jan 1, 1972. Instead each "UTC" day prior to Jan 1, 1972 is assumed to have exactly 86400 TDT seconds. Ancient Epochs -------------- The calendar used today, the Gregorian calendar, has its initial epoch on 15 October, 1582. Prior to that epoch the Julian calendar was used for the recording of epochs. October 15, 1582 (Gregorian) corresponds to October 05, 1582 (Julian). From the point of view of the implementation of this routine, all epochs belong to the Gregorian calendar extended indefinitely backward in time. If you need to obtain ephemeris seconds past the J2000 epoch from Julian Calendar strings, we suggest that you make use of the SPICELIB routine STR2ET. ExamplesThe numerical results shown for these examples may differ across platforms. The results depend on the SPICE kernels used as input, the compiler and supporting libraries, and the machine specific arithmetic implementation. 1) Below is a sampling of some of the time formats that are acceptable as inputs to UTC2ET. A complete discussion of permissible formats is given in the SPICELIB routine TPARTV as well as the User's reference file time.req located in the "doc" directory of the toolkit. ISO (T) Formats (with or without trailing "Z"). String Year Mon DOY DOM HR Min Sec ---------------------------- ---- --- --- --- -- --- ------ 1996-12-18T12:28:28 1996 Dec na 18 12 28 28 1986-01-18T12 1986 Jan na 18 12 00 00 1986-01-18T12:19 1986 Jan na 18 12 19 00 1986-01-18T12:19:52.18Z 1986 Jan na 18 12 19 52.18 1995-08T18:28:12Z 1995 na 008 na 18 28 12 1995-18T 1995 na 018 na 00 00 00 0000-01-01T 1 BC Jan na 01 00 00 00 Calendar Formats. String Year Mon DOM HR Min Sec ---------------------------- ---- --- --- -- --- ------ Tue Aug 6 11:10:57 1996 1996 Aug 06 11 10 57 1 DEC 1997 12:28:29.192 1997 Dec 01 12 28 29.192 2/3/1996 17:18:12.002 1996 Feb 03 17 18 12.002 Mar 2 12:18:17.287 1993 1993 Mar 02 12 18 17.287 1992 11:18:28 3 Jul 1992 Jul 03 11 18 28 June 12, 1989 01:21 1989 Jun 12 01 21 00 1978/3/12 23:28:59.29 1978 Mar 12 23 28 59.29 17JUN1982 18:28:28 1982 Jun 17 18 28 28 13:28:28.128 1992 27 Jun 1992 Jun 27 13 28 28.128 1972 27 jun 12:29 1972 Jun 27 12 29 00 '93 Jan 23 12:29:47.289 1993* Jan 23 12 29 47.289 27 Jan 3, 19:12:28.182 2027* Jan 03 19 12 28.182 23 A.D. APR 4, 18:28:29.29 0023** Apr 04 18 28 29.29 18 B.C. Jun 3, 12:29:28.291 -017** Jun 03 12 29 28.291 29 Jun 30 12:29:29.298 2029+ Jun 30 12 29 29.298 29 Jun '30 12:29:29.298 2030* Jun 29 12 29 29.298 Day of Year Formats String Year DOY HR Min Sec ---------------------------- ---- --- -- --- ------ 1997-162::12:18:28.827 1997 162 12 18 28.827 162-1996/12:28:28.287 1996 162 12 28 28.287 1993-321/12:28:28.287 1993 231 12 28 28.287 1992 183// 12 18 19 1992 183 12 18 19 17:28:01.287 1992-272// 1992 272 17 28 01.287 17:28:01.282 272-1994// 1994 272 17 28 01.282 '92-271/ 12:28:30.291 1992* 271 12 28 30.291 92-182/ 18:28:28.281 1992* 182 18 28 28.281 182-92/ 12:29:29.192 0182+ 092 12 29 29.192 182-'92/ 12:28:29.182 1992 182 12 28 29.182 Julian Date Strings jd 28272.291 Julian Date 28272.291 2451515.2981 (JD) Julian Date 2451515.2981 2451515.2981 JD Julian Date 2451515.2981 Abbreviations Used in Tables na --- Not Applicable Mon --- Month DOY --- Day of Year DOM --- Day of Month Wkday --- Weekday Hr --- Hour Min --- Minutes Sec --- Seconds * The default interpretation of a year that has been abbreviated with a leading quote as in 'xy (such as '92) is to treat the year as 19xy if xy > 68 and to treat it is 20xy otherwise. Thus '69 is interpreted as 1969 and '68 is treated as 2068. However, you may change the "split point" and centuries through use of the SPICELIB routine TSETYR which is an entry point in the SPICELIB module TEXPYR. See that routine for a discussion of how you may reset the split point. ** All epochs are regarded as belonging to the Gregorian calendar. We formally extend the Gregorian calendar backward and forward in time for all epochs. If you have epochs belonging to the Julian Calendar, consult the SPICELIB routines TPARTV and JUL2GR for a discussion concerning conversions to the Gregorian calendar and ET. + When a day of year format or calendar format string is input and neither of the integer components of the date is greater than 1000, the first integer is regarded as being the year. 2) Convert a calendar date in UTC string format to Julian Ephemeris date. Use the LSK kernel below to load the leap seconds and time constants required for the conversions. naif0012.tls Example code begins here. PROGRAM UTC2ET_EX1 IMPLICIT NONE C C SPICELIB functions C DOUBLE PRECISION UNITIM C C Local constants. C CHARACTER*(*) UTCSTR PARAMETER ( UTCSTR = 'Dec 19 2003 16:48:00' ) C C Local variables. C DOUBLE PRECISION ET DOUBLE PRECISION JED C C Load the LSK file. C CALL FURNSH ( 'naif0012.tls' ) C C Convert input UTC string to Ephemeris Time. C CALL UTC2ET ( UTCSTR, ET ) WRITE(*,'(2A)') 'UTC time : ', UTCSTR WRITE(*,'(A,F22.9)') 'Ephemeris time :', ET C C Convert the Ephemeris Time to Julian ephemeris date, C i.e. Julian date relative to TDB time scale. C JED = UNITIM( ET, 'ET', 'JED' ) WRITE(*,'(A,F22.9)') 'Julian Ephemeris Date:', JED END When this program was executed on a Mac/Intel/gfortran/64-bit platform, the output was: UTC time : Dec 19 2003 16:48:00 Ephemeris time : 125124544.183560610 Julian Ephemeris Date: 2452993.200742865 Restrictions1) The conversion between ET and UTC depends on the values in the input kernel pool. The kernel pool should be loaded prior to calling this routine. 2) Before using this routine for epochs prior to Jan 1, 1972 be sure to check the $Particulars section to make sure that the assumptions made in this routine are consistent with the accuracy you require for your application. 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_InstitutionJ. Diaz del Rio (ODC Space) W.M. Owen (JPL) W.L. Taber (JPL) I.M. Underwood (JPL) E.D. Wright (JPL) VersionSPICELIB Version 2.1.1, 13-AUG-2021 (JDR) (EDW) Header edits to expand description of ISO format. Edited the header to comply with NAIF standard. Added complete code example. Added note to $Particulars section. SPICELIB Version 2.1.0, 05-JAN-1998 (WLT) Comments concerning the default century for abbreviated years were updated to reflect changes to TEXPYR. SPICELIB Version 2.0.0, 20-NOV-1996 (WLT) About the only thing that is the same in this routine from the previous editions, is that the interface is unchanged. Nearly everything else has been modified. The routine was modified to make use of TPARTV and TTRANS to handle the task of parsing and computing seconds past 2000 TDB. This version now handles leap seconds correctly. SPICELIB Version 1.0.1, 10-MAR-1992 (WLT) Comment section for permuted index source lines was added following the header. SPICELIB Version 1.0.0, 31-JAN-1990 (WMO) (IMU) |
Fri Dec 31 18:37:04 2021