Class MutableInstant

java.lang.Object
org.apache.logging.log4j.core.time.MutableInstant
All Implemented Interfaces:
Serializable, TemporalAccessor, Instant, StringBuilderFormattable

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

    • MutableInstant

      public MutableInstant()
  • Method Details

    • 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
    • isSupported

      public boolean isSupported(TemporalField field)
      Specified by:
      isSupported in interface TemporalAccessor
    • getLong

      public long getLong(TemporalField field)
      Specified by:
      getLong in interface TemporalAccessor
    • range

      public ValueRange range(TemporalField field)
      Specified by:
      range in interface TemporalAccessor
    • get

      public int get(TemporalField field)
      Specified by:
      get in interface TemporalAccessor
    • query

      public <R> R query(TemporalQuery<R> query)
      Specified by:
      query in interface TemporalAccessor
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • hashCode

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

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

      public void formatTo(StringBuilder buffer)
      Specified by:
      formatTo in interface StringBuilderFormattable