edited parameter names in code
This commit is contained in:
parent
511ee043d7
commit
44e235da05
@ -1,268 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
import astropy.units as u
|
||||
from astropy.time.formats import erfa
|
||||
from astropy.time import Time
|
||||
from astropy.time import TimezoneInfo
|
||||
|
||||
MJDREF = Time(51543.875, format='mjd') #corresponds to date 01.01.2000 00:00:00 (UTC+3)
|
||||
TZ_UTC = TimezoneInfo(utc_offset=0*u.hour) #UTC time zone
|
||||
TZ_MSK = TimezoneInfo(utc_offset=3*u.hour) #UTC+3 (Moscow) time zone
|
||||
|
||||
from pkg_resources import get_distribution, DistributionNotFound
|
||||
|
||||
try:
|
||||
__version__ = get_distribution(__name__).version
|
||||
except DistributionNotFound:
|
||||
pass # package is not installed
|
||||
|
||||
|
||||
class MissionTime(object):
|
||||
|
||||
def __init__(self, mtime):
|
||||
self._mtime = mtime
|
||||
|
||||
def get(self):
|
||||
return self._mtime
|
||||
|
||||
def __str__(self):
|
||||
return str(self._mtime)
|
||||
|
||||
def to_datetime(self, tzone=TZ_UTC):
|
||||
days = self.to_mjd()
|
||||
return days.to_datetime(timezone=tzone)
|
||||
|
||||
def to_artday(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return self._mtime / ARTDAYLEN
|
||||
|
||||
def to_mjd(self):
|
||||
mjd_value = MJDREF.mjd + Time(self._mtime / erfa.DAYSEC, format='mjd').mjd
|
||||
return Time(mjd_value, format='mjd')
|
||||
|
||||
|
||||
class ArtDay(object):
|
||||
|
||||
def __init__(self, aday):
|
||||
self._aday = aday
|
||||
|
||||
def get(self):
|
||||
return self._aday
|
||||
|
||||
def __str__(self):
|
||||
return str(self._aday)
|
||||
|
||||
def to_mission(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return self._aday * ARTDAYLEN
|
||||
|
||||
def to_datetime(self, tzone=TZ_UTC):
|
||||
days = self.to_mjd()
|
||||
return days.to_datetime(timezone=tzone)
|
||||
|
||||
def to_mjd(self):
|
||||
mjd_value = MJDREF.mjd + Time(self._aday, format='mjd').mjd
|
||||
return Time(mjd_value, format='mjd')
|
||||
|
||||
|
||||
class MjdDay(object):
|
||||
|
||||
def __init__(self, mjd):
|
||||
self._mjd = Time(mjd, format='mjd')
|
||||
|
||||
def get(self):
|
||||
return self._mjd
|
||||
|
||||
def __str__(self):
|
||||
return str(self._mjd)
|
||||
|
||||
def to_mission(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return (self._mjd.mjd - MJDREF.mjd) * ARTDAYLEN
|
||||
|
||||
def to_artday(self):
|
||||
return self._mjd.mjd - MJDREF.mjd
|
||||
|
||||
def to_datetime(self, tzone=TZ_UTC):
|
||||
return Time(self._mjd, format='mjd').to_datetime(timezone=tzone)
|
||||
|
||||
|
||||
class Dtime(object):
|
||||
|
||||
def __init__(self, dtime, tzone=None):
|
||||
dtime = datetime.fromisoformat(dtime)
|
||||
if tzone is None:
|
||||
self._dtime = dtime
|
||||
else:
|
||||
self._dtime = dtime.replace(tzinfo=tzone)
|
||||
self._tzone = tzone
|
||||
|
||||
def get(self):
|
||||
return self._dtime
|
||||
|
||||
def __str__(self):
|
||||
return str(self._dtime)
|
||||
|
||||
def to_mjd(self):
|
||||
days = Time(self._dtime)
|
||||
return days
|
||||
|
||||
def to_artday(self):
|
||||
return self.to_mjd().mjd - MJDREF.mjd
|
||||
|
||||
def to_mission(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return self.to_artday() * ARTDAYLEN
|
||||
|
||||
def to_msk(self):
|
||||
dtime_utc = Time(self._dtime)
|
||||
return dtime_utc.to_datetime(timezone=TZ_MSK)
|
||||
|
||||
def to_utc(self):
|
||||
dtime_msk = Time(self._dtime)
|
||||
return dtime_msk.to_datetime(timezone=TZ_UTC)
|
||||
|
||||
|
||||
class ArtTime(object):
|
||||
|
||||
def __init__(self, aday=None, mjd=None, mtime=None, dtime_utc=None, dtime_msk=None):
|
||||
|
||||
self._has_value = False
|
||||
self._try_mtime(mtime)
|
||||
self._try_aday(aday)
|
||||
self._try_mjd(mjd)
|
||||
self._try_dtime_utc(dtime_utc)
|
||||
self._try_dtime_msk(dtime_msk)
|
||||
|
||||
def _try_mtime(self, mtime):
|
||||
if mtime is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._mtime = MissionTime(mtime)
|
||||
self._aday = ArtDay(self._mtime.to_artday())
|
||||
self._mjd = MjdDay(self._mtime.to_mjd())
|
||||
self._dtime_utc = Dtime(dtime=str(self._mtime.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._mtime.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_aday(self, aday):
|
||||
if aday is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._aday = ArtDay(aday)
|
||||
self._mtime = MissionTime(self._aday.to_mission())
|
||||
self._mjd = MjdDay(self._aday.to_mjd())
|
||||
self._dtime_utc = Dtime(dtime=str(self._aday.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._aday.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_mjd(self, mjd):
|
||||
if mjd is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._mjd = MjdDay(mjd)
|
||||
self._aday = ArtDay(self._mjd.to_artday())
|
||||
self._mtime = MissionTime(self._mjd.to_mission())
|
||||
self._dtime_utc = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_dtime_utc(self, dtime_utc):
|
||||
if dtime_utc is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._dtime_utc = Dtime(dtime_utc, tzone=TZ_UTC)
|
||||
self._dtime_msk = Dtime(str(self._dtime_utc.to_msk()))
|
||||
self._mtime = MissionTime(self._dtime_utc.to_mission())
|
||||
self._aday = ArtDay(self._dtime_utc.to_artday())
|
||||
self._mjd = MjdDay(self._dtime_utc.to_mjd())
|
||||
|
||||
def _try_dtime_msk(self, dtime_msk):
|
||||
if dtime_msk is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._dtime_msk = Dtime(dtime_msk, tzone=TZ_MSK)
|
||||
self._dtime_utc = Dtime(str(self._dtime_msk.to_utc()))
|
||||
self._mtime = MissionTime(self._dtime_msk.to_mission())
|
||||
self._aday = ArtDay(self._dtime_msk.to_artday())
|
||||
self._mjd = MjdDay(self._dtime_msk.to_mjd())
|
||||
|
||||
# def valid(self):
|
||||
# return self._has_value
|
||||
|
||||
@property
|
||||
def mission(self):
|
||||
return self._mtime
|
||||
|
||||
@property
|
||||
def artday(self):
|
||||
return self._aday
|
||||
|
||||
@property
|
||||
def mjd(self):
|
||||
return self._mjd
|
||||
|
||||
@property
|
||||
def date_utc(self):
|
||||
return self._dtime_utc
|
||||
|
||||
@property
|
||||
def date_msk(self):
|
||||
return self._dtime_msk
|
||||
|
||||
def __str__(self):
|
||||
print('Artday --> ', self._aday)
|
||||
print('Mission time --> ', self._mtime)
|
||||
print('MJD --> ', self._mjd)
|
||||
print('Date MSK --> ', self._dtime_msk)
|
||||
print('Date UTC --> ', self._dtime_utc)
|
||||
|
||||
|
||||
return str(self._mtime)
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
|
||||
mtime = 692659102.9999999
|
||||
aday = 8016.887708333336
|
||||
utc = 1639322302.999999
|
||||
dtime = '2021-12-12T18:18:23'
|
||||
mjd = 59560.762708333335
|
||||
|
||||
|
||||
# 692582400.0
|
||||
# 8016
|
||||
# 2021-12-11 21:00:00+00:00
|
||||
# 2021-12-12 00:00:00+03:00
|
||||
# 59559.875
|
||||
|
||||
|
||||
# Parameters: dtime_msk, dtime_utc, mtime, aday, mjd.
|
||||
# ArtTime converts the given parameter into all others.
|
||||
|
||||
atime = ArtTime(dtime_msk='2021-12-12T00:00:00')
|
||||
print(atime)
|
||||
print(atime.mission)
|
||||
print(atime.artday)
|
||||
print(atime.date_utc)
|
||||
print(atime.date_msk)
|
||||
print(atime.mjd)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
__version__ = '1.0'
|
||||
|
||||
main()
|
@ -14,14 +14,14 @@ TZ_MSK = TimezoneInfo(utc_offset=3*u.hour) #UTC+3 (Moscow) time zone
|
||||
|
||||
class MissionTime(object):
|
||||
|
||||
def __init__(self, mtime):
|
||||
self._mtime = mtime
|
||||
def __init__(self, missiontime):
|
||||
self._missiontime = missiontime
|
||||
|
||||
def get(self):
|
||||
return self._mtime
|
||||
return self._missiontime
|
||||
|
||||
def __str__(self):
|
||||
return str(self._mtime)
|
||||
return str(self._missiontime)
|
||||
|
||||
def to_datetime(self, tzone=TZ_UTC):
|
||||
days = self.to_mjd()
|
||||
@ -29,34 +29,34 @@ class MissionTime(object):
|
||||
|
||||
def to_artday(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return self._mtime / ARTDAYLEN
|
||||
return self._missiontime / ARTDAYLEN
|
||||
|
||||
def to_mjd(self):
|
||||
mjd_value = MJDREF.mjd + Time(self._mtime / erfa.DAYSEC, format='mjd').mjd
|
||||
mjd_value = MJDREF.mjd + Time(self._missiontime / erfa.DAYSEC, format='mjd').mjd
|
||||
return Time(mjd_value, format='mjd')
|
||||
|
||||
|
||||
class ArtDay(object):
|
||||
|
||||
def __init__(self, aday):
|
||||
self._aday = aday
|
||||
def __init__(self, artday):
|
||||
self._artday = artday
|
||||
|
||||
def get(self):
|
||||
return self._aday
|
||||
return self._artday
|
||||
|
||||
def __str__(self):
|
||||
return str(self._aday)
|
||||
return str(self._artday)
|
||||
|
||||
def to_mission(self):
|
||||
ARTDAYLEN = erfa.DAYSEC
|
||||
return self._aday * ARTDAYLEN
|
||||
return self._artday * ARTDAYLEN
|
||||
|
||||
def to_datetime(self, tzone=TZ_UTC):
|
||||
days = self.to_mjd()
|
||||
return days.to_datetime(timezone=tzone)
|
||||
|
||||
def to_mjd(self):
|
||||
mjd_value = MJDREF.mjd + Time(self._aday, format='mjd').mjd
|
||||
mjd_value = MJDREF.mjd + Time(self._artday, format='mjd').mjd
|
||||
return Time(mjd_value, format='mjd')
|
||||
|
||||
|
||||
@ -120,119 +120,105 @@ class Dtime(object):
|
||||
|
||||
class ArtTime(object):
|
||||
|
||||
def __init__(self, aday=None, mjd=None, mtime=None, dtime_utc=None, dtime_msk=None):
|
||||
def __init__(self, artday=None, missiontime=None, mjd=None, datetime_utc=None, datetime_msk=None):
|
||||
|
||||
self._has_value = False
|
||||
self._try_mtime(mtime)
|
||||
self._try_aday(aday)
|
||||
self._try_aday(artday)
|
||||
self._try_mtime(missiontime)
|
||||
self._try_mjd(mjd)
|
||||
self._try_dtime_utc(dtime_utc)
|
||||
self._try_dtime_msk(dtime_msk)
|
||||
self._try_dtime_utc(datetime_utc)
|
||||
self._try_dtime_msk(datetime_msk)
|
||||
|
||||
def _try_mtime(self, mtime):
|
||||
if mtime is None:
|
||||
def _try_mtime(self, missiontime):
|
||||
if missiontime is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._mtime = MissionTime(mtime)
|
||||
self._aday = ArtDay(self._mtime.to_artday())
|
||||
self._mjd = MjdDay(self._mtime.to_mjd())
|
||||
self._dtime_utc = Dtime(dtime=str(self._mtime.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._mtime.to_datetime(tzone=TZ_MSK)))
|
||||
self._missiontime = MissionTime(missiontime)
|
||||
self._artday = ArtDay(self._missiontime.to_artday())
|
||||
self._mjd = MjdDay(self._missiontime.to_mjd())
|
||||
self._datetime_utc = Dtime(dtime=str(self._missiontime.to_datetime(tzone=TZ_UTC)))
|
||||
self._datetime_msk = Dtime(dtime=str(self._missiontime.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_aday(self, aday):
|
||||
if aday is None:
|
||||
def _try_aday(self, artday):
|
||||
if artday is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._aday = ArtDay(aday)
|
||||
self._mtime = MissionTime(self._aday.to_mission())
|
||||
self._mjd = MjdDay(self._aday.to_mjd())
|
||||
self._dtime_utc = Dtime(dtime=str(self._aday.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._aday.to_datetime(tzone=TZ_MSK)))
|
||||
self._artday = ArtDay(artday)
|
||||
self._missiontime = MissionTime(self._artday.to_mission())
|
||||
self._mjd = MjdDay(self._artday.to_mjd())
|
||||
self._datetime_utc = Dtime(dtime=str(self._artday.to_datetime(tzone=TZ_UTC)))
|
||||
self._datetime_msk = Dtime(dtime=str(self._artday.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_mjd(self, mjd):
|
||||
if mjd is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
self._has_value = True
|
||||
|
||||
self._mjd = MjdDay(mjd)
|
||||
self._aday = ArtDay(self._mjd.to_artday())
|
||||
self._mtime = MissionTime(self._mjd.to_mission())
|
||||
self._dtime_utc = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_UTC)))
|
||||
self._dtime_msk = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_MSK)))
|
||||
self._mjd = MjdDay(mjd)
|
||||
self._artday = ArtDay(self._mjd.to_artday())
|
||||
self._missiontime = MissionTime(self._mjd.to_mission())
|
||||
self._datetime_utc = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_UTC)))
|
||||
self._datetime_msk = Dtime(dtime=str(self._mjd.to_datetime(tzone=TZ_MSK)))
|
||||
|
||||
def _try_dtime_utc(self, dtime_utc):
|
||||
if dtime_utc is None:
|
||||
def _try_dtime_utc(self, datetime_utc):
|
||||
if datetime_utc is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
self._has_value = True
|
||||
|
||||
self._dtime_utc = Dtime(dtime_utc, tzone=TZ_UTC)
|
||||
self._dtime_msk = Dtime(str(self._dtime_utc.to_msk()))
|
||||
self._mtime = MissionTime(self._dtime_utc.to_mission())
|
||||
self._aday = ArtDay(self._dtime_utc.to_artday())
|
||||
self._mjd = MjdDay(self._dtime_utc.to_mjd())
|
||||
self._datetime_utc = Dtime(datetime_utc, tzone=TZ_UTC)
|
||||
self._datetime_msk = Dtime(str(self._datetime_utc.to_msk()))
|
||||
self._missiontime = MissionTime(self._datetime_utc.to_mission())
|
||||
self._artday = ArtDay(self._datetime_utc.to_artday())
|
||||
self._mjd = MjdDay(self._datetime_utc.to_mjd())
|
||||
|
||||
def _try_dtime_msk(self, dtime_msk):
|
||||
if dtime_msk is None:
|
||||
def _try_dtime_msk(self, datetime_msk):
|
||||
if datetime_msk is None:
|
||||
return
|
||||
|
||||
self._has_value = True
|
||||
|
||||
self._dtime_msk = Dtime(dtime_msk, tzone=TZ_MSK)
|
||||
self._dtime_utc = Dtime(str(self._dtime_msk.to_utc()))
|
||||
self._mtime = MissionTime(self._dtime_msk.to_mission())
|
||||
self._aday = ArtDay(self._dtime_msk.to_artday())
|
||||
self._mjd = MjdDay(self._dtime_msk.to_mjd())
|
||||
self._has_value = True
|
||||
|
||||
self._datetime_msk = Dtime(datetime_msk, tzone=TZ_MSK)
|
||||
self._datetime_utc = Dtime(str(self._datetime_msk.to_utc()))
|
||||
self._missiontime = MissionTime(self._datetime_msk.to_mission())
|
||||
self._artday = ArtDay(self._datetime_msk.to_artday())
|
||||
self._mjd = MjdDay(self._datetime_msk.to_mjd())
|
||||
|
||||
@property
|
||||
def mission(self):
|
||||
return self._mtime
|
||||
def missiontime(self):
|
||||
return self._missiontime
|
||||
|
||||
@property
|
||||
def artday(self):
|
||||
return self._aday
|
||||
return self._artday
|
||||
|
||||
@property
|
||||
def mjd(self):
|
||||
return self._mjd
|
||||
|
||||
@property
|
||||
def date_utc(self):
|
||||
return self._dtime_utc
|
||||
def datetime_utc(self):
|
||||
return self._datetime_utc
|
||||
|
||||
@property
|
||||
def date_msk(self):
|
||||
return self._dtime_msk
|
||||
def datetime_msk(self):
|
||||
return self._datetime_msk
|
||||
|
||||
def __str__(self):
|
||||
aday_str = 'Artday --> '+str(self._aday)+'\n'
|
||||
mtime_str = 'Mission time --> '+str(self._mtime)+'\n'
|
||||
aday_str = 'Artday --> '+str(self._artday)+'\n'
|
||||
mtime_str = 'Mission time --> '+str(self._missiontime)+'\n'
|
||||
mjd_str = 'MJD --> '+str(self._mjd)+'\n'
|
||||
date_msk_str = 'Date MSK --> '+str(self._dtime_msk)+'\n'
|
||||
date_utc_str = 'Date UTC --> '+str(self._dtime_utc)+'\n'
|
||||
date_msk_str = 'Date MSK --> '+str(self._datetime_msk)+'\n'
|
||||
date_utc_str = 'Date UTC --> '+str(self._datetime_utc)+'\n'
|
||||
|
||||
return str(aday_str+mtime_str+mjd_str+date_msk_str+date_utc_str)
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
atime = ArtTime(dtime_msk='2021-12-12T00:00:00')
|
||||
print(atime)
|
||||
print(atime.mission)
|
||||
print(atime.artday)
|
||||
print(atime.date_utc)
|
||||
print(atime.date_msk)
|
||||
print(atime.mjd)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
main()
|
||||
pass
|
Loading…
x
Reference in New Issue
Block a user