This page was created by the IDL library routine
mk_html_help2.
Last modified: Sat Apr 5 18:16:45 2025.
Procedure: add_tt2000_offset
Purpose:
Takes TDAS double timestamp and offsets date(s) using the data in the CDF 3.4(or later) leap second config file.
Like time_string and time_double, it is vectorized and accepts array inputs of arbitrary dimensions
Inputs:
Dates: If /subtract is not set: double precision seconds since 1970 TAI (Unix timestamp) Can be scalar or array values with any dimensions or ordering.
If /subtract is set: double precision seconds since 1970 TT(timestamp TT 1970 epoch) can be scalar or array values with any dimensions or ordering
Keywords:
subtract: If this keyword is set, this function will subtract leap seconds from a TT date that already includes them.
Offsets: Set this to a named variable in which to return the offsets used for the calculation. Note that these can differ in both sign and magnitude for
a particular date, depending on whether you are adding or subtracting.
Return Value:
The data with leap seconds added(or removed).
Notes:
#1 This routine requires the CDF 3.4 leap second file. One will be provided with the TDAS install, but it will be updated
automatically when a new leap second occurs.
#2 The IDL system variable "!CDF_LEAP_SECONDS" must be defined for this routine to work. This variable is defined by
calling cdf_leap_second_init. Normally, the initialization routine for missions that use tt2000 should use this.
#3 The calculation adds both leap seconds and the 32.184 second historical offset between TAI and TT
Examples:
THEMIS> print,time_double('2007-03-23')-add_tt2000_offset(time_double('2007-03-23'))
-65.183998
THEMIS> print,time_double('2007-03-23')-add_tt2000_offset(time_double('2007-03-23'),offsets=off_p)
-65.183998
THEMIS> print,off_p
65.1840
THEMIS> print,time_double('2007-03-23')-add_tt2000_offset(time_double('2007-03-23'),offsets=off_s,/subtract)
65.183998
THEMIS> print,off_s
-65.1840
$LastChangedBy: egrimes $
$LastChangedDate: 2019-03-21 10:47:10 -0700 (Thu, 21 Mar 2019) $
$LastChangedRevision: 26870 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/add_tt2000_offset.pro $
(See general/misc/time/TT2000/add_tt2000_offset.pro)
PROCEDURE: cdf_leap_second_init
PURPOSE: CDF library 3.4.0 and later supports time formats
the include leap seconds. Specifically tt2000.
This routine maintains the calibration file that is required
by the CDF library and TDAS to perform the conversions.
NOTES: #1 Missions that use tt2000 times in their CDFs should call this routine inside their mission init/
config routines. (e.g. thm_init/thm_config)
#2 Set !CDF_LEAP_SECOND.preserve_leap_seconds=1 if you want to keep leap seconds included in unix times after they're imported.
This may mean that the data set will have a time dependent time skew with other data sets by ~35 seconds.(or more as additional
leap seconds are added.)
#3 This routine may modify the environment variable CDF_LEAPSECONDTABLE and update the CDF leap second table if a new version is found.
$LastChangedBy: egrimes $
$LastChangedDate: 2019-03-11 09:25:23 -0700 (Mon, 11 Mar 2019) $
$LastChangedRevision: 26778 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/cdf_leap_second_init.pro $
(See general/misc/time/TT2000/cdf_leap_second_init.pro)
Procedure: Crib TT2000 Purpose: Demonstrate how to use TT2000 times with TDAS. Describe what operations are performed on import. Notes: Requires CDF 3.4.0 or newer $LastChangedBy: pcruce $ $LastChangedDate: 2012-04-18 15:14:40 -0700 (Wed, 18 Apr 2012) $ $LastChangedRevision: 10350 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/crib_tt2000.pro $
(See general/misc/time/TT2000/crib_tt2000.pro)
FUNCTION:
tt2000_2_unix
PURPOSE:
Converts TT2000 times to unix times. This function converts the input time
to a 64-bit integer prior to calling time_double (the input is required to
be a 64-bit integer if the /tt2000 keyword is specified)
INPUT:
time: time values in TT2000
EXAMPLE:
IDL> unix_time = tt2000_2_unix(4.98e17)
IDL> unix_time
1444727946.6781905
$LastChangedBy: egrimes $
$LastChangedDate: 2017-01-03 08:27:35 -0800 (Tue, 03 Jan 2017) $
$LastChangedRevision: 22472 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/tt2000_2_unix.pro $
(See general/misc/time/TT2000/tt2000_2_unix.pro)
Function: tt2000_config_filedir.pro Purpose: Get the applications user directory for TT2000 leapsecond table $LastChangedBy: pcruce $ $LastChangedDate: 2012-04-18 15:14:40 -0700 (Wed, 18 Apr 2012) $ $LastChangedRevision: 10350 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/tt2000_config_filedir.pro $
(See general/misc/time/TT2000/tt2000_config_filedir.pro)
NAME:
tt2000_read_config
PURPOSE:
Reads the tt2000_config file
CALLING SEQUENCE:
cstruct = tt2000_read_config()
INPUT:
none, the filename is hardcoded, 'tt2000_config.txt',and is s put in a
folder given by the routine tt200_config_filedir, that uses the IDL
routine app_user_dir to create/obtain it: my linux example:
/disks/ice/home/jimm/.idl/tt2000/tt2000_config-4-linux
OUTPUT:
cstruct = a structure with the changeable fields of the !CDF_LEAP_SECONDS
structure
HISTORY:
Copied shamelessly from thm_read_config by pcruce on 2012/04/18
$LastChangedBy: nikos $
$LastChangedDate: 2015-11-18 14:03:31 -0800 (Wed, 18 Nov 2015) $
$LastChangedRevision: 19411 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/tt2000_read_config.pro $
(See general/misc/time/TT2000/tt2000_read_config.pro)
NAME:
tt2000_write_config
PURPOSE:
Writes the tt2000_config file
CALLING SEQUENCE:
tt2000_write_config, copy=copy
INPUT:
none, the filename is hardcoded, 'tt2000_config.txt',and is s put in a
folder given by the routine tt2000_config_filedir, that uses the IDL
routine app_user_dir to create/obtain it: my linux example:
/disks/ice/home/jimm/.idl/tt2000/tt2000_config-4-linux
OUTPUT:
the file is written, and a copy of any old file is generated
KEYWORD:
copy = if set, the file is read in and a copy with the !stime
appended is written out
HISTORY:
Copied shamelessly from thm_write_config by pcruce on 2012/04/18
$LastChangedBy: nikos $
$LastChangedDate: 2013-06-17 16:29:26 -0700 (Mon, 17 Jun 2013) $
$LastChangedRevision: 12548 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/tt2000_write_config.pro $
(See general/misc/time/TT2000/tt2000_write_config.pro)
FUNCTION:
unix_to_tt2000
PURPOSE:
Converts unix times to TT2000 times.
INPUT:
unix_times: unix time values
EXAMPLE:
IDL> tt2000_time = unix_to_tt2000(1.4501376e+09)
IDL> tt2000_time
503409664183998107
convert back:
IDL> print, tt2000_2_unix(503409664183998107ll)
1.4501376e+09
$LastChangedBy: egrimes $
$LastChangedDate: 2020-08-10 09:13:29 -0700 (Mon, 10 Aug 2020) $
$LastChangedRevision: 29011 $
$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/time/TT2000/unix_to_tt2000.pro $
(See general/misc/time/TT2000/unix_to_tt2000.pro)