All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java.time.temporal.ChronoField.scala Maven / Gradle / Ivy

package java.time.temporal

import java.time.Year

final class ChronoField private (name: String, ordinal: Int,
    _range: ValueRange, baseUnit: ChronoUnit, rangeUnit: ChronoUnit, flags: Int)
    extends Enum[ChronoField](name, ordinal) with TemporalField {

  import ChronoField._

  // Not implemented:
  // def String getDisplayName(locale: java.util.Locale)

  def getBaseUnit(): TemporalUnit = baseUnit

  def getRangeUnit(): TemporalUnit = rangeUnit

  def range(): ValueRange = _range

  def isDateBased(): Boolean = (flags & isDateBasedFlag) != 0

  def isTimeBased(): Boolean = (flags & isTimeBasedFlag) != 0

  def checkValidValue(value: Long): Long =
    _range.checkValidValue(value, this)

  def checkValidIntValue(value: Long): Int =
    _range.checkValidIntValue(value, this)

  def isSupportedBy(temporal: TemporalAccessor): Boolean =
    temporal.isSupported(this)

  def rangeRefinedBy(temporal: TemporalAccessor): ValueRange =
    temporal.range(this)

  def getFrom(temporal: TemporalAccessor): Long = temporal.getLong(this)

  def adjustInto[R <: Temporal](temporal: R, newValue: Long): R =
    temporal.`with`(this, newValue).asInstanceOf[R]
}

object ChronoField {

  import ChronoUnit._

  private final val isTimeBasedFlag = 1
  private final val isDateBasedFlag = 2

  final val NANO_OF_SECOND = new ChronoField("NanoOfSecond", 0,
      ValueRange.of(0, 999999999), NANOS, SECONDS, isTimeBasedFlag)

  final val NANO_OF_DAY = new ChronoField("NanoOfDay", 1,
      ValueRange.of(0, 86399999999999L), NANOS, DAYS, isTimeBasedFlag)

  final val MICRO_OF_SECOND = new ChronoField("MicroOfSecond", 2,
      ValueRange.of(0, 999999), MICROS, SECONDS, isTimeBasedFlag)

  final val MICRO_OF_DAY = new ChronoField("MicroOfDay", 3,
      ValueRange.of(0, 86399999999L), MICROS, DAYS, isTimeBasedFlag)

  final val MILLI_OF_SECOND = new ChronoField("MilliOfSecond", 4,
      ValueRange.of(0, 999), MILLIS, SECONDS, isTimeBasedFlag)

  final val MILLI_OF_DAY = new ChronoField("MilliOfDay", 5,
      ValueRange.of(0, 86399999), MILLIS, DAYS, isTimeBasedFlag)

  final val SECOND_OF_MINUTE = new ChronoField("SecondOfMinute", 6,
      ValueRange.of(0, 59), SECONDS, MINUTES, isTimeBasedFlag)

  final val SECOND_OF_DAY = new ChronoField("SecondOfDay", 7,
      ValueRange.of(0, 86399), SECONDS, DAYS, isTimeBasedFlag)

  final val MINUTE_OF_HOUR = new ChronoField("MinuteOfHour", 8,
      ValueRange.of(0, 59), MINUTES, HOURS, isTimeBasedFlag)

  final val MINUTE_OF_DAY = new ChronoField("MinuteOfDay", 9,
      ValueRange.of(0, 1439), MINUTES, DAYS, isTimeBasedFlag)

  final val HOUR_OF_AMPM = new ChronoField("HourOfAmPm", 10,
      ValueRange.of(0, 11), HOURS, HALF_DAYS, isTimeBasedFlag)

  final val CLOCK_HOUR_OF_AMPM = new ChronoField("ClockHourOfAmPm", 11,
      ValueRange.of(1, 12), HOURS, HALF_DAYS, isTimeBasedFlag)

  final val HOUR_OF_DAY = new ChronoField("HourOfDay", 12,
      ValueRange.of(0, 23), HOURS, DAYS, isTimeBasedFlag)

  final val CLOCK_HOUR_OF_DAY = new ChronoField("ClockHourOfDay", 13,
      ValueRange.of(1, 24), HOURS, DAYS, isTimeBasedFlag)

  final val AMPM_OF_DAY = new ChronoField("AmPmOfDay", 14,
      ValueRange.of(0, 1), HALF_DAYS, DAYS, isTimeBasedFlag)

  final val DAY_OF_WEEK = new ChronoField("DayOfWeek", 15,
      ValueRange.of(1, 7), DAYS, WEEKS, isDateBasedFlag)

  final val ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField("AlignedDayOfWeekInMonth",
      16, ValueRange.of(1, 7), DAYS, WEEKS, isDateBasedFlag)

  final val ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField("AlignedDayOfWeekInYear",
      17, ValueRange.of(1, 7), DAYS, WEEKS, isDateBasedFlag)

  final val DAY_OF_MONTH = new ChronoField("DayOfMonth", 18,
      ValueRange.of(1, 28, 31), DAYS, MONTHS, isDateBasedFlag)

  final val DAY_OF_YEAR = new ChronoField("DayOfYear", 19,
      ValueRange.of(1, 365, 366), DAYS, YEARS, isDateBasedFlag)

  final val EPOCH_DAY = new ChronoField("EpochDay", 20,
      ValueRange.of(-365249999634L, 365249999634L), DAYS, FOREVER, isDateBasedFlag)

  final val ALIGNED_WEEK_OF_MONTH = new ChronoField("AlignedWeekOfMonth", 21,
      ValueRange.of(1, 4, 5), WEEKS, MONTHS, isDateBasedFlag)

  final val ALIGNED_WEEK_OF_YEAR = new ChronoField("AlignedWeekOfYear", 22,
      ValueRange.of(1, 53), WEEKS, YEARS, isDateBasedFlag)

  final val MONTH_OF_YEAR = new ChronoField("MonthOfYear", 23,
      ValueRange.of(1, 12), MONTHS, YEARS, isDateBasedFlag)

  final val PROLEPTIC_MONTH = new ChronoField("ProlepticMonth", 24,
      ValueRange.of(-11999999988L, 11999999999L), MONTHS, FOREVER, isDateBasedFlag)

  final val YEAR_OF_ERA = new ChronoField("YearOfEra", 25,
      ValueRange.of(1, 999999999, 1000000000), YEARS, ERAS, isDateBasedFlag)

  final val YEAR = new ChronoField("Year", 26,
      ValueRange.of(Year.MIN_VALUE, Year.MAX_VALUE), YEARS, FOREVER, isDateBasedFlag)

  final val ERA = new ChronoField("Era", 27, ValueRange.of(0, 1), ERAS, FOREVER,
      isDateBasedFlag)

  final val INSTANT_SECONDS = new ChronoField("InstantSeconds", 28,
      ValueRange.of(Long.MinValue, Long.MaxValue), SECONDS, FOREVER, 0)

  final val OFFSET_SECONDS = new ChronoField("OffsetSeconds", 29,
      ValueRange.of(-64800, 64800), SECONDS, FOREVER, 0)

  private val fields = Array(NANO_OF_SECOND, NANO_OF_DAY, MICRO_OF_SECOND,
      MICRO_OF_DAY, MILLI_OF_SECOND, MILLI_OF_DAY, SECOND_OF_MINUTE,
      SECOND_OF_DAY, MINUTE_OF_HOUR, MINUTE_OF_DAY, HOUR_OF_AMPM,
      CLOCK_HOUR_OF_AMPM, HOUR_OF_DAY, CLOCK_HOUR_OF_DAY,
      AMPM_OF_DAY, DAY_OF_WEEK, ALIGNED_DAY_OF_WEEK_IN_MONTH,
      ALIGNED_DAY_OF_WEEK_IN_YEAR, DAY_OF_MONTH, DAY_OF_YEAR, EPOCH_DAY,
      ALIGNED_WEEK_OF_MONTH, ALIGNED_WEEK_OF_YEAR, MONTH_OF_YEAR, PROLEPTIC_MONTH,
      YEAR_OF_ERA, YEAR, ERA, INSTANT_SECONDS, OFFSET_SECONDS)

  def values(): Array[ChronoField] = fields.clone()

  def valueOf(name: String): ChronoField = {
    fields.find(f => name == toScreamingSnakeCase(f.name)).getOrElse {
      throw new IllegalArgumentException(s"No such field: $name")
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy