This class defines the UTC time-scale including when leap seconds occur. Subclasses obtain the data from a suitable source, such as a file.
The static methods on this class provide access to the system leap second rules.
These are used by default in UtcInstant and TaiInstant.
Using other rules requires manual use of this class.
The system rules can be updated using a LeapSeconds.txt} file.
You can create your own version of this file and place it in on the classpath
and it will be used. Due to Java 9 module restrictions, the file is located
under META-INF to avoid module encapsulation problems -
META-INF/org/threeten/extra/scale/LeapSeconds.txt.
Serializable wherever possible.
| Modifier and Type | Field and Description |
|---|---|
| pack-priv static final long | NANOS_PER_SECOND
Constant for nanos per standard second: 1,000,000,000. |
| pack-priv static final int | OFFSET_MJD_EPOCH
Constant for the offset from MJD day 0 to the Java Epoch of 1970-01-01: 40587. |
| pack-priv static final int | OFFSET_MJD_TAI
Constant for the offset from MJD day 0 to TAI day 0 of 1958-01-01: 36204. |
| pack-priv static final long | SECS_PER_DAY
Constant for number of seconds per standard day: 86,400. |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public Instant | Returns: the converted instant, not nullthe UTC instant to convert, not null utcInstant)Converts a |
| public Instant | Returns: the converted instant, not nullthe TAI instant to convert, not null taiInstant)Converts a |
| public TaiInstant | Returns: the converted TAI instant, not nullthe UTC instant to convert, not null utcInstant)Converts a |
| public TaiInstant | Returns: the converted instant, not nullthe instant to convert, not null instant)Converts an |
| public abstract UtcInstant | Returns: the converted UTC instant, not nullthe TAI instant to convert, not null taiInstant)Converts a |
| public UtcInstant | Returns: the converted UTC instant, not nullthe instant to convert, not null instant)Converts an |
| public abstract int | Returns: the number of seconds added, or removed, from the date, either -1 or 1the date as a Modified Julian Day (number of days from the epoch of 1858-11-17) mjDay)Gets the leap second adjustment on the specified date. |
| public abstract long[] | Returns: an array of leap second dates expressed as Modified Julian Day values, not nullGets all known leap second dates. |
| public abstract String | |
| public abstract int | Returns: the TAI offset in secondsthe date as a Modified Julian Day (number of days from the epoch of 1858-11-17) mjDay)Gets the offset to TAI on the specified date. |
| public static void | registerLeapSecond(long
the Modified Julian Day that the leap second occurs at the end of mjDay, int the leap seconds to add/remove at the end of the day, either -1 or 1 leapAdjustment)Adds a new leap second to the system default leap second rules. |
| public static UtcRules | |
| public String | Returns: the string representation, not nullOverrides java. A string representation of these rules. |
| public void | validateModifiedJulianDay(long
the date as a Modified Julian Day (number of days from the epoch of 1858-11-17) mjDay, long the nanoseconds within the day, including leap seconds nanoOfDay)Validates combination of Modified Julian Day and nanosecond-of-day. |
| NANOS_PER_SECOND | back to summary |
|---|---|
| pack-priv static final long NANOS_PER_SECOND Constant for nanos per standard second: 1,000,000,000. | |
| OFFSET_MJD_EPOCH | back to summary |
|---|---|
| pack-priv static final int OFFSET_MJD_EPOCH Constant for the offset from MJD day 0 to the Java Epoch of 1970-01-01: 40587. | |
| OFFSET_MJD_TAI | back to summary |
|---|---|
| pack-priv static final int OFFSET_MJD_TAI Constant for the offset from MJD day 0 to TAI day 0 of 1958-01-01: 36204. | |
| SECS_PER_DAY | back to summary |
|---|---|
| pack-priv static final long SECS_PER_DAY Constant for number of seconds per standard day: 86,400. | |
| UtcRules | back to summary |
|---|---|
| protected UtcRules() Creates an instance of the rules. | |
| convertToInstant | back to summary |
|---|---|
| public Instant convertToInstant(UtcInstant utcInstant) Converts a This method converts from the UTC time-scale to one with 86400 subdivisions per day using the leap-second rules of the implementation. The standard implementation uses the UTC-SLS algorithm. Overriding this algorithm is possible, however doing so will conflict other parts of the specification.
The algorithm calculates the UTC-SLS nanos-of-day
| |
| convertToInstant | back to summary |
|---|---|
| public Instant convertToInstant(TaiInstant taiInstant) Converts a This method converts from the TAI time-scale to one with 86400 subdivisions per day using the leap-second rules of the implementation.
The standard implementation uses UTC-SLS. It uses
| |
| convertToTai | back to summary |
|---|---|
| public TaiInstant convertToTai(UtcInstant utcInstant) Converts a This method converts from the UTC to the TAI time-scale using the leap-second rules of the implementation.
| |
| convertToTai | back to summary |
|---|---|
| public TaiInstant convertToTai(Instant instant) Converts an This method converts from an instant with 86400 subdivisions per day to the TAI time-scale using the leap-second rules of the implementation.
The standard implementation uses the UTC-SLS algorithm. It uses
| |
| convertToUtc | back to summary |
|---|---|
| public abstract UtcInstant convertToUtc(TaiInstant taiInstant) Converts a This method converts from the TAI to the UTC time-scale using the leap-second rules of the implementation.
| |
| convertToUtc | back to summary |
|---|---|
| public UtcInstant convertToUtc(Instant instant) Converts an This method converts from an instant with 86400 subdivisions per day to the UTC time-scale using the leap-second rules of the implementation. The standard implementation uses the UTC-SLS algorithm. Overriding this algorithm is possible, however doing so will conflict other parts of the specification.
The algorithm calculates the UTC nanos-of-day
| |
| getLeapSecondAdjustment | back to summary |
|---|---|
| public abstract int getLeapSecondAdjustment(long mjDay) Gets the leap second adjustment on the specified date.
The UTC standard restricts the adjustment on any day to Any leap seconds are added to, or removed from, the end of the specified date. If the UTC specification is altered to allow multiple leap seconds at once, then the result of this method would return a number with an absolute value greater than one.
| |
| getLeapSecondDates | back to summary |
|---|---|
| public abstract long[] getLeapSecondDates() Gets all known leap second dates. The dates are returned as Modified Julian Day values. The leap second is added to, or removed from, the end of the specified dates. The dates will be sorted from earliest to latest.
| |
| getName | back to summary |
|---|---|
| public abstract String getName() The name of these rules.
| |
| getTaiOffset | back to summary |
|---|---|
| public abstract int getTaiOffset(long mjDay) Gets the offset to TAI on the specified date. The TAI offset starts at 10 in 1972 and varies from then on based on the dates of leap seconds. The offset will apply for the whole of the date.
| |
| registerLeapSecond | back to summary |
|---|---|
| public static void registerLeapSecond(long mjDay, int leapAdjustment) Adds a new leap second to the system default leap second rules. This method registers a new leap second with the system leap second rules. Once registered, there is no way to deregister the leap second.
Calling this method is thread-safe.
Its effects are immediately visible in all threads.
Where possible, only call this method from a single thread to avoid the possibility of
a If the leap second being added matches a previous definition, then the method returns normally. If the date is before the last registered date and does not match a previous definition, then an exception is thrown.
| |
| system | back to summary |
|---|---|
| public static UtcRules system() Gets the system default leap second rules. The system default rules are serializable, immutable and thread-safe. They will remain up to date as new leap seconds are added.
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. A string representation of these rules. | |
| validateModifiedJulianDay | back to summary |
|---|---|
| public void validateModifiedJulianDay(long mjDay, long nanoOfDay) Validates combination of Modified Julian Day and nanosecond-of-day. Modified Julian Day is a simple incrementing count of days where day 0 is 1858-11-17. Nanosecond-of-day is a simple count of nanoseconds from the start of the day including any additional leap-second. This method validates the nanosecond-of-day value against the Modified Julian Day.
The nanosecond-of-day value has a valid range from
| |