Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
cspice_timout

Table of contents
Abstract
I/O
Parameters
Examples
Particulars
Exceptions
Files
Restrictions
Required_Reading
Literature_References
Author_and_Institution
Version
Index_Entries


Abstract


   CSPICE_TIMOUT converts an input epoch represented in TDB seconds past the
   TDB epoch of J2000 to a character string formatted to the specifications
   of a user's format picture.

I/O


   Given:

      et       a double precision representation of time in seconds past the
               ephemeris epoch J2000, or an N-vector of representations.

               help, et
                  DOUBLE = Scalar   or   DOUBLE = Array[N]

      pictur   a string that specifies how the output should be presented.

               help, pictur
                  STRING = Scalar

               The string is made up of various markers that stand for
               various components associated with a time.

               There are five types of markers that may appear in a
               format picture. These are String Markers, Numeric
               Markers, Meta markers, Modifier Markers and Literal
               Markers.

               The `pictur' string is examined and the various markers
               are identified. The output time string is constructed
               by replacing each of the identified markers with
               an appropriate time component.

               The various markers and their meanings are discussed
               in the -Particulars section below.

               Note that leading and trailing blanks in `pictur' are
               ignored.

      outlen   the maximum allowed length of the output string `output'.

               help, outlen
                  LONG = Scalar

               This length must be large enough to hold the output string
               plus the null-terminator character. If the output string is
               expected to have N characters, `outlen' should be at least
               N+1.

   the call:

      cspice_timout, et, pictur, outlen, output

   returns:

      output   a time string equivalent to the input epoch `et', matching
               the format specified by `pictur', or an N-vector of strings.

               help, output
                  STRING = Scalar   or   STRING = Array[N]

               `output' returns with the same measure of
               vectorization (N) as `et'.

Parameters


   None.

Examples


   Any numerical results shown for this example may differ between
   platforms as the results depend on the SPICE kernels used as input
   and the machine specific arithmetic implementation.

   1) Given a sample with the format of the UNIX date string
      local to California, create a SPICE time picture for use
      in cspice_timout.

      Using that SPICE time picture, convert a series of ephemeris
      times to that picture format.

      Use the LSK kernel below to load the leap seconds and time
      constants required for the conversions.

         naif0012.tls


      Example code begins here.


      PRO timout_ex1

         ;;
         ;; Sample with the format of the UNIX date string
         ;; local to California
         ;;
         sample = 'Thu Oct 1 11:11:11 PDT 1111'
         SIZE   = 5
         outlen = strlen(sample) + 1

         ;;
         ;; Load a leapseconds kernel file.
         ;;
         cspice_furnsh, 'naif0012.tls'

         ;;
         ;; Create the pic string.
         ;;
         cspice_tpictr, sample, 64, pic, ok, err

         ;;
         ;; Check the error flag, 'ok', for problems.
         ;;
         if ( ~ok ) then begin
            print, err
            stop
         endif

         ;;
         ;; Convert an ephemeris time to the 'pic' format.
         ;;
         ;; Using the ET representation for: Dec 25 2005, 1:15:00 AM UTC
         ;;
         et = 188745364.d

         cspice_timout, et, pic, outlen, output
         print, 'Scalar: '
         print, 'ET              : ', et
         print, 'Converted output: ', output
         print

         ;;
         ;; Create an array of ephemeris times beginning
         ;; at 188745364.d with graduations of 10000.0
         ;; ephemeris seconds.
         ;;
         et = 10000.d * dindgen( SIZE ) + 188745364.d

         ;;
         ;; Convert the array of ephemeris times 'et' to an
         ;; array of time strings, 'output', in 'pic' format.
         ;;
         cspice_timout, et, pic, outlen, output

         print, 'Vector:'
         for i=0, (SIZE-1) do begin
            print, 'ET              : ', et[i]
            print, 'Converted output: ', output[i]
            print
         endfor

         ;;
         ;; It's always good form to unload kernels after use,
         ;; particularly in IDL due to data persistence.
         ;;
         cspice_kclear

      END


      When this program was executed on a Mac/Intel/IDL8.x/64-bit
      platform, the output was:


      Scalar:
      ET              :    1.8874536e+08
      Converted output: Sat Dec 24 18:14:59 PDT 2005

      Vector:
      ET              :    1.8874536e+08
      Converted output: Sat Dec 24 18:14:59 PDT 2005

      ET              :    1.8875536e+08
      Converted output: Sat Dec 24 21:01:39 PDT 2005

      ET              :    1.8876536e+08
      Converted output: Sat Dec 24 23:48:19 PDT 2005

      ET              :    1.8877536e+08
      Converted output: Sun Dec 25 02:34:59 PDT 2005

      ET              :    1.8878536e+08
      Converted output: Sun Dec 25 05:21:39 PDT 2005


Particulars


   A format picture is simply a string of letters that lets
   cspice_timout know where various components of a time representation
   should be placed during creation of the time string.
   Here's an example of such a picture:

      MON DD,YYYY  HR:MN:SC.#### (TDB) ::TDB

   Here is a sample of times that would be created by using this
   format.

      JAN 12,1992  12:28:18.2772 (TDB)
      FEB 13,1994  23:18:25.2882 (TDB)
      AUG 21,1995  00:02:00.1881 (TDB)

   As you can see from the samples above, the format picture
   specifies that every time string created should begin with a
   three-letter abbreviation for the month, followed by a space and
   the day of the month. The day of month is followed immediately by
   a comma and the year. The year component is followed by two
   spaces. The next outputs are hours represented as a two digit
   integer, a colon, minutes represented as a two digit integer,
   another colon, and seconds truncated to 4 decimal places and
   having a two digit integer part (rounding can be commanded; see
   the discussion of truncation and rounding below). This is
   followed by a space and the string '(TDB)'. The special marker
   '::TDB' in the time picture is a ``invisible'' marker. It is
   used to specify the time system that should be used in creating
   the time string (in this case Barycentric Dynamical Time).

   cspice_timout does not recognize all of the parts of the time format
   picture in the example above. The list of recognized parts and
   unrecognized parts is shown in the table below.

     Recognized       Unrecognized
     ----------       ------------
     'MON'            ' '
     'DD'             ','
     'YYYY'           '  '
     'HR'             ':'
     'MN'             '(TDB)'
     'SC'
     '.####'
     '::TDB'

   The unrecognized parts are called literal markers. They are
   copied exactly as they appear in `pictur' into the output string.
   The recognized parts of the picture are replaced by a
   component of time or, as in the case of '::TDB' are used
   as instructions about the overall properties of the time
   string.

   The full list of recognized markers, their classification
   and meaning are given below.

   MARKER       CLASS     MEANING
   -----------  --------  -----------------------------------------
   '.##...'     modifier  represents a numeric component that
                          immediately precedes this in a decimal
                          format. Number of decimal places
                          equals the number of '#' characters
   '::GCAL'     meta      dates are reported in Gregorian calendar
   '::JCAL'     meta      dates are reported in Julian calendar
   '::MCAL'     meta      dates after 15 October, 1582 are reported
                          in Gregorian calendar; before that
                          dates are reported in Julian calendar

   '::RND'      meta      round output to places specified by
                          least significant component

   '::TDB'      meta      all components should be TDB

   '::TDT'      meta      all components should be TT (TDT)

   '::TT'       meta      all components should be TT (TDT)

   '::TRNC'     meta      truncate all output components (default)
   '::UTC'      meta      all components should be UTC (default)
   '::UTC+h:m'  meta      all components in UTC offset by +h (hours)
                          and +m (minutes) so as to allow time zones.
   '::UTC-h:m'  meta      all components in UTC offset by -h (hours)
                          and -m (minutes) so as to allow time zones.
   'AMPM'       string    String (either 'A.M.' or 'P.M.')
                          indicating whether hours are before
                          or after noon.
   'ampm'       string    String (either 'a.m.' or 'p.m.')
                          indicating whether hours are before
                          or after noon.
   'AP'         numeric   AM/PM equivalents of the hour component
                          of a time.
   'DD'         numeric   Day of month
   'DOY'        numeric   Day of year
   'ERA'        string    String (either 'B.C.' or 'A.D.') giving
                          era associated with an epoch.
   '?ERA?'      string    String: either ' B.C. ' or ' A.D. ' if the
                          year is before 1000 A.D. otherwise a
                          blank: ' '.
   'era'        string    String (either 'b.c.' or 'a.d.') giving
                          era associated with an epoch.
   '?era?'      string    String: either ' b.c. ' or ' a.d. ' if the
                          year is before 1000 A.D. otherwise a
                          blank: ' '.
   'HR'         numeric   hour component of time
   'JULIAND'    numeric   Julian date component of time
   'MM'         numeric   numeric representation of month component
   'MN'         numeric   minute component of time
   'MON'        string    upper case three letter abbreviation for
                          month
   'Mon'        string    capitalized three letter abbreviation for
                          month
   'mon'        string    lower case three letter abbreviation for
                          month
   'MONTH'      string    upper case full name of month
   'Month'      string    capitalized full name of month
   'month'      string    lower case full name of month
   'SC'         numeric   seconds component of time
   'SP1950'     numeric   seconds past 1950 component of time
   'SP2000'     numeric   seconds past 2000 component of time
   'YR'         numeric   last two digits of year component of time
   'YYYY'       numeric   year component of time
   'WEEKDAY'    string    upper case day of week
   'Weekday'    string    capitalized day of week
   'weekday'    string    lower case day of week
   'WKD'        string    upper case three letter abbreviation for
                          day of week.
   'Wkd'        string    capitalized three letter abbreviation for
                          day of week.
   'wkd'        string    lower case three letter abbreviation for
                          day of week.

   String Markers

      String markers are portions of the format picture that will
      be replaced with a character string that represents the
      corresponding component of a time.

   Numeric Markers

      Numeric markers are portions of the format picture that will
      be replaced with a decimal string that represents the
      corresponding component of a time.

   Meta Markers

      Meta markers (listed under the class ``meta'' in the
      table above) are used to indicate "global" properties of
      your time string. You may specify time scale and how
      rounding should be performed on the components of time
      in your output string. Meta markers may be placed anywhere
      in your format picture. They do not contribute to placement
      of characters in output time strings. Also there are no
      restrictions on how many meta markers you may place in
      the format picture. However, if you supply conflicting
      `meta' markers (for example '::TDT' and '::TDB') in your
      picture the first marker listed (in left to right order)
      overrules the conflicting marker that appears later in
      the picture.

   Default Meta Markers

      If you do not specify a time system, calendar, or time
      zone through the use of a Meta Marker, cspice_timout uses the
      values returned by the SPICE routine cspice_timdef. The default
      time system, calendar returned by cspice_timdef are UTC and
      the Gregorian calendar. The default time zone returned
      by cspice_timdef is a blank indicating that no time zone offset
      should be used.

      See the header for the routine cspice_timdef for a more complete
      discussion of setting and retrieving default values.

   Modifier Markers

      The numeric markers listed in the table above stand
      for integers unless they are modified through use of a
      modifier marker. The strings

         .#
         .##
         .###
         .####

      are used to this end. When a numeric marker is followed
      immediately by one of these modifiers, the corresponding time
      component will be written with the number of decimal places
      indicated by the number of successive occurrences of the
      character '#'. Any numeric token may be modified.

   Rounding vs. Truncation

      The meta markers ::TRNC and ::RND allow you to control
      how the output time picture is rounded. If you specify
      ::TRNC all components of time are simply truncated to
      the precision specified by the marker and any modifier.
      If you specify ::RND the output time is rounded to the
      least significant component of the format picture. The
      default action is truncation.

      Whether an output time string should be rounded or
      truncated depends upon what you plan to do with the
      string. For example suppose you simply want to get the
      calendar date associated with a time and not the time of
      day. Then you probably do not want to round your output.
      Rounding 1992 Dec 31, 13:12:00 to the nearest day
      produces 1993 Jan 1. Thus in this case rounding is probably
      not appropriate.

      However, if you are producing output for plotting using
      Julian Date, seconds past 1950 or seconds past 2000, you will
      probably want your output rounded so as to produce a smoother
      plot.

   Time Systems

      cspice_timout can produce output strings for epochs relative to any of
      the systems UTC, TT or TDT, or TDB. If you do not explicitly specify a
      time system, cspice_timout will produce strings relative to the time
      system returned by the SPICE routine cspice_timdef. Unless you call
      cspice_timdef and change it, the default time system is UTC. However,
      by using one of the Meta Markers ::UTC, ::TT, ::TDT, or ::TDB you may
      specify that cspice_timout produce time strings relative to the UTC,
      TT or TDT, or TDB system respectively.

   Time Zones

      The meta markers ::UTC+h:m  and ::UTC-h:m  allow you to
      offset UTC times so that you may represent times in a time
      zone other than GMT. For example you can output times in
      Pacific Standard time by placing the meta-marker ::UTC-8 in
      your format picture.

      For instance, if you use the picture

         YYYY Mon DD, HR:MN:SC ::UTC

      you will get output strings such as:

         1995 Jan 03, 12:00:00

      If you use the picture


         YYYY Mon DD, HR:MN:SC ::UTC-8

      you will get output strings such as:

         1995 Jan 03, 04:00:00

      Finally, if you use the picture

         YYYY Mon DD, HR:MN:SC ::UTC-8:15

      you will get output string

         1995 Jan 03, 03:45:00

      Note that the minutes are always added or subtracted based on
      the sign present in the time zone specifier. In the case of
      ::UTC+h:m, minutes are added. In the case ::UTC-h:m, minutes
      are subtracted.

      The unsigned part of the hours component can be no more than
      12. The unsigned part of the minutes component can be no
      more than 59.

   Calendars

      The calendar currently used by western countries is the
      Gregorian calendar. This calendar begins on Oct 15, 1582.
      Prior to Gregorian calendar the Julian calendar was used. The
      last Julian calendar date prior to the beginning of the
      Gregorian calendar is Oct 5, 1582.

      The primary difference between the Julian and Gregorian
      calendars is in the determination of leap years. Nevertheless,
      both can be formally extended backward and forward in time
      indefinitely.

      By default cspice_timout uses the default calendar returned by
      cspice_timdef. Under most circumstances this will be the Gregorian
      calendar (::GCAL). However you may specify that cspice_timout use a
      specific calendar through use of one of the calendar Meta
      Markers. You may specify that cspice_timout use the Julian calendar
      (::JCAL), the Gregorian calendar (::GCAL)  or a mixture of
      both (::MCAL).

      If you specify ::MCAL, epochs that occur after the beginning
      of the Gregorian calendar will be represented using the
      Gregorian calendar, and epochs prior to the beginning of the
      Gregorian calendar will be represented using the Julian
      calendar.

   Getting Software to Construct Pictures for You.

      Although it is not difficult to construct time format
      pictures, you do need to be aware of the various markers that
      may appear in a format picture.

      There is an alternative means for getting a format picture.
      The routine cspice_tpictr constructs format pictures from a sample
      time string. For example, suppose you would like your time
      strings to look like the basic pattern of the string below.

         'Fri Jul 26 12:22:09 PDT 1996'

      You can call cspice_tpictr with this string, and it will create the
      appropriate `pictur' for use with cspice_timout.

         cspice_tpictr, 'Fri Jul 26 12:22:09 PDT 1996',                      $
                        LENPIC, pictur, ok, errmsg

      The result will be:

         'Wkd Mon DD HR:MN:SC (PDT) ::UTC-7'

      Note: not every date that you can read is interpretable by
      cspice_tpictr. For example, you might be able to understand that
      19960212121116 is Feb 2 1996, 12:11:16. However, cspice_tpictr
      cannot recognize this string. Thus it is important to check
      the logical output OK to make sure that cspice_tpictr was able to
      understand the time picture you provided.

      Even thought cspice_tpictr can not recognize every time pattern that
      has been used by various people, it does recognize nearly all
      patterns that you use when you want to communicate outside
      your particular circle of colleagues.

Exceptions


   1)  A leapseconds kernel must be loaded via the routine cspice_furnsh
       before calling this routine. If a leapsecond kernel has not
       been loaded, an error is signaled by a routine in the call
       tree of this routine.

   2)  If `pictur' contains the numeric marker 'YYYY' and the
       magnitude of year is too large to be displayed as a four-digit
       integer, cspice_timout will replace it by '****'.

   3)  If the requested precision is higher than 12 decimal places,
       cspice_timout will truncate the decimal part down to 12, and
       `output' will have all the remaining digits in the decimal
       part set to zero.

   4)  Double colon (::), when is not part of one of the supported
       markers, has no effect and will be presented as is on the
       output string.

   5)  If any of the input arguments, `et', `pictur' or `outlen', is
       undefined, an error is signaled by the IDL error handling
       system.

   6)  If any of the input arguments, `et', `pictur' or `outlen', is
       not of the expected type, or it does not have the expected
       dimensions and size, an error is signaled by the Icy
       interface.

   7)  If the output argument `output' is not a named variable, an
       error is signaled by the Icy interface.

Files


   A leapseconds kernel must be "loaded" via the routine cspice_furnsh
   prior to calling cspice_timout.

Restrictions


   None.

Required_Reading


   ICY.REQ
   TIME.REQ

Literature_References


   None.

Author_and_Institution


   J. Diaz del Rio     (ODC Space)
   E.D. Wright         (JPL)

Version


   -Icy Version 1.2.0, 13-AUG-2021 (EDW) (JDR)

       Changed the input argument name "lenout" to "outlen" for
       consistency with other routines.

       Corrected typo preventing correct calculation of decimal
       values for HR.###... and MN.###... markers with ::UTC+N:M
       and ::UTC-N:M meta tags.

       Added '::TT' as a time system meta marker equivalent-to/
       alias-for '::TDT'. No change to functionality.

       Edited the header to comply with NAIF standard. Added
       example's problem statement and meta-kernel. Reformatted
       example's output and added call to cspice_kclear.

       Added -Parameters, -Exceptions, -Files, -Restrictions,
       -Literature_References and -Author_and_Institution sections.

       Removed reference to the routine's corresponding CSPICE header from
       -Abstract section.

       Added arguments' type and size information in the -I/O section.

   -Icy Version 1.1.3, 13-APR-2015 (EDW)

       Added -Particulars section corresponding to version in CSPICE
       timout_c wrapper.

   -Icy Version 1.1.2, 19-SEP-2011 (EDW)

       Corrected error in example code. cspice_tpictr
       call used 'outlen' variable for 'pic' length instead
       of value 64.

   -Icy Version 1.1.1, 05-FEB-2008 (EDW)

       Edited -I/O section, replaced comment

          "returns with the same order"

       with

          "returns with the same measure of vectorization"

   -Icy Version 1.1.0, 12-SEP-2004 (EDW)

       Added capability to process vector 'et' input
       returning an array of time strings 'output'.

   -Icy Version 1.0.0, 16-JUN-2003 (EDW)

Index_Entries


   Convert and format d.p. seconds past J2000 as a string



Fri Dec 31 18:43:08 2021