Class DateTime

java.lang.Object
com.ethlo.time.DateTime
All Implemented Interfaces:
TemporalAccessor

public class DateTime extends Object implements TemporalAccessor
Container class for parsed date/date-time data. The getMostGranularField() contains the highest granularity field found, like MONTH, MINUTE, SECOND.
  • Field Details

    • leapSecondHandler

      private static final LeapSecondHandler leapSecondHandler
    • field

      private final Field field
    • year

      private final int year
    • month

      private final int month
    • day

      private final int day
    • hour

      private final int hour
    • minute

      private final int minute
    • second

      private final int second
    • nano

      private final int nano
    • offset

      private final TimezoneOffset offset
    • fractionDigits

      private final int fractionDigits
    • charLength

      private final int charLength
  • Constructor Details

    • DateTime

      public DateTime(Field field, int year, int month, int day, int hour, int minute, int second, int nano, TimezoneOffset offset, int fractionDigits)
    • DateTime

      public DateTime(Field field, int year, int month, int day, int hour, int minute, int second, int nano, TimezoneOffset offset, int fractionDigits, int charLength)
  • Method Details

    • of

      public static DateTime of(int year, int month, int day, int hour, int minute, int second, TimezoneOffset offset)
      Create a new instance with second granularity from the input parameters
      Parameters:
      year - year
      month - month
      day - day
      hour - hour
      minute - minute
      second - second
      offset - timezone offset
      Returns:
      A DateTime with second granularity
    • of

      public static DateTime of(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset, int fractionDigits)
      Create a new instance with nanosecond granularity from the input parameters
      Parameters:
      year - year
      month - month
      day - day
      hour - hour
      minute - minute
      second - second
      nanos - nanos
      offset - timezone offset
      fractionDigits - The granularity of the fractional seconds field
      Returns:
      A DateTime with nanosecond granularity
    • ofYear

      public static DateTime ofYear(int year)
      Create a new instance with year granularity from the input parameters
      Parameters:
      year - The year
      Returns:
      a new instance with year granularity from the input parameters
    • ofYearMonth

      public static DateTime ofYearMonth(int year, int month)
      Create a new instance with year-month granularity from the input parameters
      Parameters:
      year - The year
      month - The month
      Returns:
      a new instance with year-month granularity from the input parameters
    • ofDate

      public static DateTime ofDate(int year, int month, int day)
      Create a new instance with day granularity from the input parameters
      Parameters:
      year - The year
      month - The month
      day - The day
      Returns:
      a new instance with day granularity from the input parameters
    • of

      public static DateTime of(int year, int month, int day, int hour, int minute, TimezoneOffset offset)
      Create a new instance with minute granularity from the input parameters
      Parameters:
      year - The year
      month - The month
      day - The day
      hour - The hour
      minute - The minute
      offset - The timezone offset
      Returns:
      a new instance with minute granularity from the input parameters
    • of

      public static DateTime of(OffsetDateTime dateTime)
      Create a new instance with data from the specified date-time.
      Parameters:
      dateTime - The date-time to copy data from
      Returns:
      A new instance
    • leapSecondCheck

      private static void leapSecondCheck(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset)
    • includesGranularity

      public boolean includesGranularity(Field field)
      Returns if the specified field is part of this date/date-time
      Parameters:
      field - The field to check for
      Returns:
      True if included, otherwise false
    • getYear

      public int getYear()
    • getMonth

      public int getMonth()
    • getDayOfMonth

      public int getDayOfMonth()
    • getHour

      public int getHour()
    • getMinute

      public int getMinute()
    • getSecond

      public int getSecond()
    • getNano

      public int getNano()
    • getOffset

      public Optional<TimezoneOffset> getOffset()
      Returns the time offset, if available
      Returns:
      the time offset, if available
    • toYear

      public Year toYear()
      Creates a Year discarding any higher granularity fields
      Returns:
      the Year
    • toYearMonth

      public YearMonth toYearMonth()
      Creates a YearMonth discarding any higher granularity fields
      Returns:
      the YearMonth
    • toLocalDatetime

      public LocalDateTime toLocalDatetime()
      Creates a LocalDateTime discarding any timezone information
      Returns:
      the LocalDateTime
    • toOffsetDatetime

      public OffsetDateTime toOffsetDatetime()
      Creates an OffsetDateTime
      Returns:
      the OffsetDateTime
    • toLocalDate

      public LocalDate toLocalDate()
      Creates a LocalDate, discarding any higher granularity fields
      Returns:
      the LocalDate
    • getMostGranularField

      public Field getMostGranularField()
      Returns the most granular field found during parsing
      Returns:
      The field found
    • assertMinGranularity

      private void assertMinGranularity(Field field)
    • toString

      public String toString(Field lastIncluded)
      Formats this date-time as an ISO formatted string with the last included field as specified.
      Parameters:
      lastIncluded - The last specified field to include
      Returns:
      The formatted date/date-time string
    • toString

      public String toString(int fractionDigits)
      Formats this date-time as an RFC-3339 compatible string with the specified number of fractions in the second.
      Parameters:
      fractionDigits - The number of fractions to include
      Returns:
      The formatted date/date-time string
    • toString

      private String toString(DateTime date, Field lastIncluded, int fractionDigits)
    • getFractionDigits

      public int getFractionDigits()
      Return the number of significant fraction digits in the second.
      Returns:
      The number of significant fraction digits
    • toString

      public String toString()
      Formats this date-time as a date/date-time with the same fields as was parsed
      Overrides:
      toString in class Object
      Returns:
      The formatted date/date-time string
    • equals

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

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

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

      public long getLong(TemporalField temporalField)
      Specified by:
      getLong in interface TemporalAccessor
    • toInstant

      public Instant toInstant()

      This method will attempt to create an Instant from whatever granularity is available in the parsed year/date/date-time.

      Missing fields will be replaced by their lowest allowed value: 1 for month and day, 0 for any missing time component.

      NOTE: If there is no time-zone defined, UTC will be assumed

      Returns:
      An instant representing the point in time.
    • toEpochSeconds

      private long toEpochSeconds()
    • validated

      private void validated()
    • getParseLength

      public int getParseLength()
    • toLocalTime

      public LocalTime toLocalTime()