Class MutableInstant

  • All Implemented Interfaces:
    Serializable, Instant, StringBuilderFormattable

    public class MutableInstant
    extends Object
    implements Instant, Serializable
    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 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
      • 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
      • 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
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • formatTo

        public void formatTo​(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