Class MutableInstant

  • All Implemented Interfaces:
    java.io.Serializable, java.time.temporal.TemporalAccessor, Instant, StringBuilderFormattable

    public class MutableInstant
    extends java.lang.Object
    implements Instant, java.io.Serializable, java.time.temporal.TemporalAccessor
    An instantaneous point on the time line, used for high-precision log event timestamps. Modeled on java.time.Instant, except that this version is mutable to prevent allocating temporary objects that need to be garbage-collected later.

    Instances of this class are not thread-safe and should not be shared between threads.

    Since:
    2.11
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      MutableInstant()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object object)  
      void formatTo​(java.lang.StringBuilder buffer)
      Writes a text representation of this object into the specified StringBuilder, ideally without allocating temporary objects.
      int get​(java.time.temporal.TemporalField field)  
      long getEpochMillisecond()
      Gets the number of milliseconds from the Java epoch of 1970-01-01T00:00:00Z.
      long getEpochSecond()
      Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.
      long getLong​(java.time.temporal.TemporalField field)  
      int getNanoOfMillisecond()
      Gets the number of nanoseconds, later along the time-line, from the start of the millisecond.
      int getNanoOfSecond()
      Gets the number of nanoseconds, later along the time-line, from the start of the second.
      int hashCode()  
      void initFrom​(Instant other)  
      void initFrom​(Clock clock)  
      void initFromEpochMilli​(long epochMilli, int nanoOfMillisecond)
      Updates the fields of this MutableInstant from the specified epoch millis.
      void initFromEpochSecond​(long epochSecond, int nano)
      Updates the fields of this MutableInstant from the specified instant components.
      static void instantToMillisAndNanos​(long epochSecond, int nano, long[] result)
      Updates the elements of the specified long[] result array from the specified instant components.
      boolean isSupported​(java.time.temporal.TemporalField field)  
      <R> R query​(java.time.temporal.TemporalQuery<R> query)  
      java.time.temporal.ValueRange range​(java.time.temporal.TemporalField field)  
      java.lang.String toString()  
      private void validateNanoOfMillisecond​(int nanoOfMillisecond)  
      private void validateNanoOfSecond​(int nano)  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • epochSecond

        private long epochSecond
      • nanoOfSecond

        private int nanoOfSecond
    • Constructor Detail

      • MutableInstant

        public MutableInstant()
    • Method Detail

      • getEpochSecond

        public long getEpochSecond()
        Description copied from interface: Instant
        Gets the number of seconds from the Java epoch of 1970-01-01T00:00:00Z.

        The epoch second count is a simple incrementing count of seconds where second 0 is 1970-01-01T00:00:00Z. The nanosecond part of the day is returned by Instant.getNanoOfSecond().

        Specified by:
        getEpochSecond in interface Instant
        Returns:
        the seconds from the epoch of 1970-01-01T00:00:00Z
      • getNanoOfSecond

        public int getNanoOfSecond()
        Description copied from interface: Instant
        Gets the number of nanoseconds, later along the time-line, from the start of the second.

        The nanosecond-of-second value measures the total number of nanoseconds from the second returned by Instant.getEpochSecond().

        Specified by:
        getNanoOfSecond in interface Instant
        Returns:
        the nanoseconds within the second, always positive, never exceeds 999,999,999
      • getEpochMillisecond

        public long getEpochMillisecond()
        Description copied from interface: Instant
        Gets the number of milliseconds from the Java epoch of 1970-01-01T00:00:00Z.

        The epoch millisecond count is a simple incrementing count of milliseconds where millisecond 0 is 1970-01-01T00:00:00Z. The nanosecond part of the day is returned by Instant.getNanoOfMillisecond().

        Specified by:
        getEpochMillisecond in interface Instant
        Returns:
        the milliseconds from the epoch of 1970-01-01T00:00:00Z
      • getNanoOfMillisecond

        public int getNanoOfMillisecond()
        Description copied from interface: Instant
        Gets the number of nanoseconds, later along the time-line, from the start of the millisecond.

        The nanosecond-of-millisecond value measures the total number of nanoseconds from the millisecond returned by Instant.getEpochMillisecond().

        Specified by:
        getNanoOfMillisecond in interface Instant
        Returns:
        the nanoseconds within the millisecond, always positive, never exceeds 999,999
      • initFrom

        public void initFrom​(Instant other)
      • initFromEpochMilli

        public void initFromEpochMilli​(long epochMilli,
                                       int nanoOfMillisecond)
        Updates the fields of this MutableInstant from the specified epoch millis.
        Parameters:
        epochMilli - the number of milliseconds from the Java epoch of 1970-01-01T00:00:00Z
        nanoOfMillisecond - the number of nanoseconds, later along the time-line, from the start of the millisecond
      • validateNanoOfMillisecond

        private void validateNanoOfMillisecond​(int nanoOfMillisecond)
      • initFrom

        public void initFrom​(Clock clock)
      • initFromEpochSecond

        public void initFromEpochSecond​(long epochSecond,
                                        int nano)
        Updates the fields of this MutableInstant from the specified instant components.
        Parameters:
        epochSecond - the number of seconds from the Java epoch of 1970-01-01T00:00:00Z
        nano - the number of nanoseconds, later along the time-line, from the start of the second
      • validateNanoOfSecond

        private void validateNanoOfSecond​(int nano)
      • instantToMillisAndNanos

        public static void instantToMillisAndNanos​(long epochSecond,
                                                   int nano,
                                                   long[] result)
        Updates the elements of the specified long[] result array from the specified instant components.
        Parameters:
        epochSecond - (input) the number of seconds from the Java epoch of 1970-01-01T00:00:00Z
        nano - (input) the number of nanoseconds, later along the time-line, from the start of the second
        result - (output) a two-element array to store the result: the first element is the number of milliseconds from the Java epoch of 1970-01-01T00:00:00Z, the second element is the number of nanoseconds, later along the time-line, from the start of the millisecond
      • isSupported

        public boolean isSupported​(java.time.temporal.TemporalField field)
        Specified by:
        isSupported in interface java.time.temporal.TemporalAccessor
      • getLong

        public long getLong​(java.time.temporal.TemporalField field)
        Specified by:
        getLong in interface java.time.temporal.TemporalAccessor
      • range

        public java.time.temporal.ValueRange range​(java.time.temporal.TemporalField field)
        Specified by:
        range in interface java.time.temporal.TemporalAccessor
      • get

        public int get​(java.time.temporal.TemporalField field)
        Specified by:
        get in interface java.time.temporal.TemporalAccessor
      • query

        public <R> R query​(java.time.temporal.TemporalQuery<R> query)
        Specified by:
        query in interface java.time.temporal.TemporalAccessor
      • equals

        public boolean equals​(java.lang.Object object)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • formatTo

        public void formatTo​(java.lang.StringBuilder buffer)
        Description copied from interface: StringBuilderFormattable
        Writes a text representation of this object into the specified StringBuilder, ideally without allocating temporary objects.
        Specified by:
        formatTo in interface StringBuilderFormattable
        Parameters:
        buffer - the StringBuilder to write into