Newer
Older
from datetime import timedelta, datetime
__copyright__ = "Copyright (C) 2015 University of Wisconsin SSEC. All rights reserved."
UNIX_EPOCH = datetime(1970, 1, 1)
CDS_EPOCH = datetime(1958, 1, 1)
return (dt - datetime(1970, 1, 1)).total_seconds()
def timecode_parts_to_dt(days, ms, us, epoch):
Convert components to a UTC datetime based on arbitrary epoch.
"""
return epoch + timedelta(days=days, microseconds=1e3 * ms + us)
def timecode_parts_to_iet(days, ms, us, epoch):
"""
Convert components to a IET based on arbitrary epoch.
return int(
_get_grain().utc2tai(
epoch
+ timedelta(
days=float(days), milliseconds=float(ms), microseconds=float(us)
),
epoch,
)
* 1e6
)
CCSDS Day Segmented timecode (UTC) parts to IET (microseconds)
return timecode_parts_to_iet(days, ms, us, CDS_EPOCH)
def cds_to_dt(days, ms, us):
"""
CCSDS Day Segmented timecode to UTC datetime.
"""
return timecode_parts_to_dt(days, ms, us, CDS_EPOCH)
def dt_to_cds(dt):
"""
UTC datetime to (day, millis, micros)
"""
return (d.days, int(d.seconds * 1e3), d.microseconds)
_grain = None
def _get_grain():
global _grain
if _grain is None:
_grain = Grain()
return _grain
def dt_to_iet(*args, **kwargs):
return _get_grain().utc2iet(*args, **kwargs)
def iet_to_dt(*args, **kwargs):
return _get_grain().iet2utc(*args, **kwargs)