from hifitime import Duration, Epoch, TimeScale, TimeSeries, Unit
if __name__ == "__main__":
e = Epoch.system_now()
print(f"UTC epoch: {e}")
print(f"TAI epoch: {e.to_gregorian_tai()}")
print(f"ET epoch: {e.to_string_gregorian(TimeScale.ET)}")
print(f"TDB epoch: {e.to_string_gregorian(TimeScale.TDB)}")
print(f"min negative = {Duration.min_negative()}")
print(f"min positive = {Duration.min_positive()}")
print(f"Max duration: {Duration.max()}") print(f"Nanosecond precision: {Duration.max() - Unit.Nanosecond * 1.0}")
assert f"{Unit.Day * 1.2}" == "1 days 4 h 48 min"
assert f"{Unit.Day * 1.200001598974}" == "1 days 4 h 48 min 138 ms 151 μs 353 ns"
print(f"Saturated add: {Duration.max() + Unit.Day * 1.0}")
time_series = TimeSeries(
Epoch.system_now(),
Epoch.system_now() + Unit.Day * 0.3,
Unit.Hour * 0.5,
inclusive=True,
)
print(time_series)
for num, epoch in enumerate(time_series):
print(f"#{num}:\t{epoch}")
e1 = Epoch.system_now()
e3 = e1 + Unit.Day * 1.5998
epoch_delta = e3.timedelta(e1)
assert (
epoch_delta
== Unit.Day * 1 + Unit.Hour * 14 + Unit.Minute * 23 + Unit.Second * 42.720
)
print(epoch_delta)