Module: IERS::TAI
- Defined in:
- lib/iers/tai.rb
Class Method Summary collapse
-
.tai_to_utc(input = nil, jd: nil, mjd: nil) ⇒ Float
Convert a TAI instant to UTC.
-
.utc_to_tai(input = nil, jd: nil, mjd: nil) ⇒ Float
Convert a UTC instant to TAI.
Class Method Details
.tai_to_utc(input = nil, jd: nil, mjd: nil) ⇒ Float
Convert a TAI instant to UTC.
Uses the TAI instant for an initial leap second lookup, then verifies the offset at the derived UTC. If TAI and UTC straddle a leap second boundary the first lookup may be off by one second; the verification step corrects this exactly.
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/iers/tai.rb', line 32 def tai_to_utc(input = nil, jd: nil, mjd: nil) tai_mjd = TimeScale.to_mjd(input, jd: jd, mjd: mjd) initial_offset = LeapSecond.at(mjd: tai_mjd) utc_mjd = tai_mjd - initial_offset / TimeScale::SECONDS_PER_DAY verified_offset = LeapSecond.at(mjd: utc_mjd) return utc_mjd if verified_offset == initial_offset tai_mjd - verified_offset / TimeScale::SECONDS_PER_DAY end |
.utc_to_tai(input = nil, jd: nil, mjd: nil) ⇒ Float
Convert a UTC instant to TAI.
14 15 16 17 18 |
# File 'lib/iers/tai.rb', line 14 def utc_to_tai(input = nil, jd: nil, mjd: nil) utc_mjd = TimeScale.to_mjd(input, jd: jd, mjd: mjd) tai_utc = LeapSecond.at(mjd: utc_mjd) utc_mjd + tai_utc / TimeScale::SECONDS_PER_DAY end |