Source code for pyspedas.utilities.spice.time_ephemeris

import datetime
import logging
import numpy as np
from pyspedas.tplot_tools import time_double
from pyspedas.utilities.interpol import interpol


[docs] def time_ephemeris(t, et2ut=False): """ Convert between unix time and ephemeris time, based on the IDL routine by Davin Larson Parameters ========== t: float Input time to convert, by default unix time (seconds since 1970-01-01) et2ut: bool If True, convert ephemeris time (seconds since 2000-01-01/11:58:55 UTC) to unix time (Default: False) Examples ======== >>> strdate='2025-01-01/00:00:00' >>> ut = pyspedas.time_double(strdate) >>> et = pyspedas.time_ephemeris(ut) >>> print(et) 788961669.184 """ if not isinstance(t, float): t = time_double(t) ls_utimes = time_double( ['0200-1-1', '1972-1-1', '1972-7-1', '1973-1-1', '1974-1-1', '1975-1-1', '1976-1-1', '1977-1-1', '1978-1-1', '1979-1-1', '1980-1-1', '1981-7-1', '1982-7-1', '1983-7-1', '1985-7-1', '1988-1-1', '1990-1-1', '1991-1-1', '1992-7-1', '1993-7-1', '1994-7-1', '1996-1-1', '1997-7-1', '1999-1-1', '2006-1-1', '2009-1-1', '2012-7-1', '2015-7-1', '2017-1-1', '3000-1-1']) ls_num = np.arange(len(ls_utimes)) + 9 utc_et_diff = time_double('2000-1-1/12:00:00') - 32.184 ls_etimes = ls_utimes + ls_num - utc_et_diff disable_time = time_double('2027-01-01') # time of next possible leap second if time_double() > disable_time - 30*86400.0: logging.warning('Warning: This procedure must be modified before ' + str(disable_time) + ' to account for potential leap second') if time_double() > disable_time: raise ValueError('Sorry! This procedure has been disabled because it was not modified to account for a possible leap second on ' + str(disable_time)) if time_double() > disable_time - 7*86400.0: logging.warning('Warning: This procedure must be modified before ' + str(disable_time) + ' to account for potential leap second at that time.') if et2ut: return t - np.floor(interpol(ls_num, ls_etimes, t)) + utc_et_diff ut = time_double(t) return ut + np.floor(interpol(ls_num, ls_utimes, ut)) - utc_et_diff