模块 java.base

类 ThaiBuddhistChronology

java.lang.Object
java.time.chrono.AbstractChronology
java.time.chrono.ThaiBuddhistChronology
所有已实现的接口:
Serializable , Comparable<Chronology> , Chronology

public final class ThaiBuddhistChronology extends AbstractChronology implements Serializable
泰国佛教日历系统。

该年表定义了泰国佛历系统的规则。该日历系统主要用于泰国。日期对齐使得 2484-01-01 (Buddhist)1941-01-01 (ISO)

字段定义如下:

  • 纪元 - 有两个纪元,当前的“佛教”纪元 (ERA_BE) 和前一个纪元 (ERA_BEFORE_BE)。
  • 纪元年 - 当前纪元的纪元年从第一年的纪元开始统一增加。对于前一个时代,随着时间的倒退,年份从一年开始增加。当前纪元的值等于 ISO proleptic-year 加上 543。
  • proleptic-year - proleptic 年与当前纪元的纪元年相同。对于前一个时代,年份为零,然后为负值。该值等于 ISO propeptic-year 加上 543。
  • month-of-year - ThaiBuddhist month-of-year 与 ISO 完全匹配。
  • day-of-month - ThaiBuddhist day-of-month 与 ISO 完全匹配。
  • day-of-year - ThaiBuddhist day-of-year 与 ISO 完全匹配。
  • 闰年 - ThaiBuddhist 的闰年模式与 ISO 完全匹配,这样两个日历永远不会不一致。
实现要求:
这个类是不可变的和线程安全的。
自从:
1.8
参见:
  • 字段详细信息

  • 方法详情

    • getId

      public String  getId()
      获取年表的 ID - 'ThaiBuddhist'。

      ID 唯一标识 Chronology 。它可用于使用 Chronology.of(String) 查找 Chronology

      指定者:
      getId 在接口 Chronology
      返回:
      年表 ID - 'ThaiBuddhist'
      参见:
    • getCalendarType

      public String  getCalendarType()
      获取底层日历系统的日历类型 - 'buddhist'。

      日历类型是由 Unicode Locale Data Markup Language (LDML) 规范定义的标识符。它可用于使用 Chronology.of(String) 查找 Chronology。它也可以用作区域设置的一部分,可通过 Locale.getUnicodeLocaleType(String) 使用键“ca”访问。

      指定者:
      getCalendarType 在接口 Chronology
      返回:
      日历系统类型 - 'buddhist'
      参见:
    • date

      public ThaiBuddhistDate  date(Era  era, int yearOfEra, int month, int dayOfMonth)
      从 era、year-of-era、month-of-year 和 day-of-month 字段中获取泰国佛历系统中的本地日期。
      指定者:
      date 在接口 Chronology
      参数:
      era - 泰国佛教时代,不为空
      yearOfEra - 年代
      month - 月份
      dayOfMonth - 每月的第几天
      返回:
      泰国佛教当地日期,不为空
      抛出:
      DateTimeException - 如果无法创建日期
      ClassCastException - 如果 era 不是 ThaiBuddhistEra
    • date

      public ThaiBuddhistDate  date(int prolepticYear, int month, int dayOfMonth)
      从预历年、月份和月份字段中获取泰国佛历系统中的本地日期。
      指定者:
      date 在接口 Chronology
      参数:
      prolepticYear - 预兆年
      month - 月份
      dayOfMonth - 每月的第几天
      返回:
      泰国佛教当地日期,不为空
      抛出:
      DateTimeException - 如果无法创建日期
    • dateYearDay

      public ThaiBuddhistDate  dateYearDay(Era  era, int yearOfEra, int dayOfYear)
      从 era、year-of-era 和 day-of-year 字段获取泰国佛历系统中的本地日期。
      指定者:
      dateYearDay 在接口 Chronology
      参数:
      era - 泰国佛教时代,不为空
      yearOfEra - 年代
      dayOfYear - 一年中的第几天
      返回:
      泰国佛教当地日期,不为空
      抛出:
      DateTimeException - 如果无法创建日期
      ClassCastException - 如果 era 不是 ThaiBuddhistEra
    • dateYearDay

      public ThaiBuddhistDate  dateYearDay(int prolepticYear, int dayOfYear)
      从 proleptic-year 和 day-of-year 字段中获取泰国佛教日历系统中的本地日期。
      指定者:
      dateYearDay 在接口 Chronology
      参数:
      prolepticYear - 预兆年
      dayOfYear - 一年中的第几天
      返回:
      泰国佛教当地日期,不为空
      抛出:
      DateTimeException - 如果无法创建日期
    • dateEpochDay

      public ThaiBuddhistDate  dateEpochDay(long epochDay)
      从纪元日获取泰国佛历系统中的本地日期。
      指定者:
      dateEpochDay 在接口 Chronology
      参数:
      epochDay - 纪元日
      返回:
      泰国佛教当地日期,不为空
      抛出:
      DateTimeException - 如果无法创建日期
    • dateNow

      public ThaiBuddhistDate  dateNow()
      从接口 Chronology 复制的描述
      从默认时区的系统时钟获取此年表中的当前本地日期。

      这将在默认时区查询 system clock 以获取当前日期。

      使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。

      指定者:
      dateNow 在接口 Chronology
      返回:
      使用系统时钟和默认时区的当前本地日期,不为空
    • dateNow

      public ThaiBuddhistDate  dateNow(ZoneId  zone)
      从接口 Chronology 复制的描述
      从指定时区的系统时钟获取此年表中的当前本地日期。

      这将查询 system clock 以获取当前日期。指定时区避免了对默认时区的依赖。

      使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。

      指定者:
      dateNow 在接口 Chronology
      参数:
      zone - 要使用的区域 ID,不为空
      返回:
      使用系统时钟的当前本地日期,不为空
    • dateNow

      public ThaiBuddhistDate  dateNow(Clock  clock)
      从接口 Chronology 复制的描述
      从指定的时钟获取此年表中的当前本地日期。

      这将查询指定的时钟以获取当前日期 - 今天。使用此方法允许使用备用时钟进行测试。可以使用 dependency injection 引入备用时钟。

      指定者:
      dateNow 在接口 Chronology
      参数:
      clock - 使用的时钟,不为空
      返回:
      当前本地日期,不为空
    • date

      public ThaiBuddhistDate  date(TemporalAccessor  temporal)
      从接口 Chronology 复制的描述
      从另一个时间对象获取此年表中的本地日期。

      这将根据指定的时间获取此年表中的日期。 TemporalAccessor 表示一组任意的日期和时间信息,该工厂将其转换为 ChronoLocalDate 的一个实例。

      转换通常使用跨日历系统标准化的 EPOCH_DAY 字段。

      此方法与功能接口 TemporalQuery 的签名相匹配,允许它通过方法引用 aChronology::date 用作查询。

      指定者:
      date 在接口 Chronology
      参数:
      temporal - 要转换的时间对象,不为空
      返回:
      此年表中的本地日期,不为空
      参见:
    • localDateTime

      public ChronoLocalDateTime <ThaiBuddhistDate > localDateTime(TemporalAccessor  temporal)
      从接口 Chronology 复制的描述
      从另一个时间对象获取此年表中的本地日期时间。

      这将根据指定的时间在此年表中获取日期时间。 TemporalAccessor 表示一组任意的日期和时间信息,该工厂将其转换为 ChronoLocalDateTime 的一个实例。

      转换从时间对象中提取并组合 ChronoLocalDateLocalTime。允许实现执行优化,例如访问与相关对象等效的那些字段。结果使用此年表。

      此方法与功能接口 TemporalQuery 的签名相匹配,允许它通过方法引用 aChronology::localDateTime 用作查询。

      指定者:
      localDateTime 在接口 Chronology
      参数:
      temporal - 要转换的时间对象,不为空
      返回:
      此年表中的本地日期时间,不为空
      参见:
    • zonedDateTime

      public ChronoZonedDateTime <ThaiBuddhistDate > zonedDateTime(TemporalAccessor  temporal)
      从接口 Chronology 复制的描述
      从另一个时间对象获得此年表中的 ChronoZonedDateTime

      这将根据指定的时间在此年表中获得分区日期时间。 TemporalAccessor 表示一组任意的日期和时间信息,该工厂将其转换为 ChronoZonedDateTime 的一个实例。

      转换将首先从时间对象获取 ZoneId,必要时回落到 ZoneOffset。然后它将尝试获取 Instant ,必要时回落到 ChronoLocalDateTime 。结果将是 ZoneIdZoneOffsetInstantChronoLocalDateTime 的组合。允许实现执行优化,例如访问与相关对象等效的那些字段。结果使用此年表。

      此方法与功能接口 TemporalQuery 的签名相匹配,允许它通过方法引用 aChronology::zonedDateTime 用作查询。

      指定者:
      zonedDateTime 在接口 Chronology
      参数:
      temporal - 要转换的时间对象,不为空
      返回:
      此年表中的分区日期时间,不为空
      参见:
    • zonedDateTime

      public ChronoZonedDateTime <ThaiBuddhistDate > zonedDateTime(Instant  instant, ZoneId  zone)
      从接口 Chronology 复制的描述
      Instant 获得此年表中的 ChronoZonedDateTime

      这将获得与指定时刻具有相同时刻的分区日期时间。

      指定者:
      zonedDateTime 在接口 Chronology
      参数:
      instant - 创建日期时间的时刻,不为空
      zone - 时区,不为空
      返回:
      分区日期时间,不为空
    • isLeapYear

      public boolean isLeapYear(long prolepticYear)
      检查指定年份是否为闰年。

      泰国佛教闰年与 ISO 闰年完全一致。此方法不验证传入的年份,并且只有支持范围内年份的明确定义的结果。

      指定者:
      isLeapYear 在接口 Chronology
      参数:
      prolepticYear - 要检查的预期年份,未针对范围进行验证
      返回:
      如果这一年是闰年,则为真
    • prolepticYear

      public int prolepticYear(Era  era, int yearOfEra)
      从接口 Chronology 复制的描述
      计算给定时代和时代的预期年份。

      这将时代和时代结合到单一的预测年字段。

      如果年表积极使用纪元,例如 JapaneseChronology,那么纪元年将根据纪元进行验证。对于其他年表,验证是可选的。

      指定者:
      prolepticYear 在接口 Chronology
      参数:
      era - 年表正确类型的时代,不为空
      yearOfEra - 纪年年代
      返回:
      推算年份
    • eraOf

      public ThaiBuddhistEra  eraOf(int eraValue)
      从接口 Chronology 复制的描述
      从数值创建年代对象。

      从概念上讲,时代是时间线的最大划分。大多数日历系统都有一个纪元,将时间线分为两个纪元。然而,有些有多个时代,例如每个领导人的统治时期。确切的含义由年表根据以下限制确定。

      在 1970-01-01 使用的纪元必须具有值 1。后面的纪元必须依次具有更高的值。较早的时代必须具有顺序较低的值。每个年表必须引用一个枚举或类似的单例来提供时代值。

      此方法返回指定纪元值的正确类型的单例纪元。

      指定者:
      eraOf 在接口 Chronology
      参数:
      eraValue - 时代值
      返回:
      日历系统时代,不为空
    • eras

      public List <Era > eras()
      从接口 Chronology 复制的描述
      获取年表的纪元列表。

      大多数日历系统都有一个时代,其中年份具有意义。如果日历系统不支持时代的概念,则必须返回一个空列表。

      指定者:
      eras 在接口 Chronology
      返回:
      年表的时代列表,可能是不可变的,不为空
    • range

      public ValueRange  range(ChronoField  field)
      从接口 Chronology 复制的描述
      获取指定字段的有效值范围。

      所有字段都可以表示为一个long整数。此方法返回一个描述该值有效范围的对象。

      请注意,结果仅描述了最小和最大有效值,重要的是不要过多地解读它们。例如,范围内可能存在对该字段无效的值。

      无论年表是否支持该字段,此方法都会返回一个结果。

      指定者:
      range 在接口 Chronology
      参数:
      field - 获取范围的字段,不为空
      返回:
      该字段的有效值范围,不为空
    • resolveDate

      public ThaiBuddhistDate  resolveDate(Map <TemporalField ,Long > fieldValues, ResolverStyle  resolverStyle)
      从类复制的描述:AbstractChronology
      在解析期间将已解析的 ChronoField 值解析为日期。

      大多数 TemporalField 实现都是使用字段上的 resolve 方法解析的。相比之下,ChronoField 类定义的字段仅与年表相关。因此,ChronoField 日期字段在特定年表的上下文中在此处解析。

      ChronoField 实例通过此方法解析,可能在子类中被覆盖。

      • EPOCH_DAY - 如果存在,则将其转换为日期,然后根据日期交叉检查所有其他日期字段。
      • PROLEPTIC_MONTH - 如果存在,则将其拆分为 YEARMONTH_OF_YEAR。如果模式是严格的或智能的,则验证该字段。
      • YEAR_OF_ERAERA - 如果两者都存在,则它们组合起来形成一个 YEAR 。在宽松模式下,YEAR_OF_ERA 范围未被验证,在智能和严格模式下它是。 ERA 在所有三种模式下都针对范围进行了验证。如果只有 YEAR_OF_ERA 存在,并且模式是 smart 或 lenient,则假定最后一个可用时代。在严格模式下,不假定任何纪元,YEAR_OF_ERA 保持不变。如果只有 ERA 存在,则保持不变。
      • YEARMONTH_OF_YEARDAY_OF_MONTH - 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式是 smart 或 strict,则验证月份和日期。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后加上天差。如果模式是智能的,并且每月的日期大于年月的最大值,则将日期调整为每月的最后一天。如果模式是严格的,那么这三个字段必须形成一个有效的日期。
      • YEARDAY_OF_YEAR - 如果两者都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,则日期的组合方式相当于在请求年份的第一天创建一个日期,然后添加天数差异。如果模式是 smart 或 strict,那么这两个字段必须形成一个有效日期。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 如果所有四个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,那么日期的组合方式相当于在所请求年份的第一个月的第一天创建一个日期,然后加上月差,然后是周差,然后是天差。如果模式是智能或严格,则所有四个字段都将验证到它们的外部范围。然后以相当于在请求的年和月的第一天创建日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日和周调整是否未更改月份。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 如果所有四个都存在,则将它们组合起来形成一个日期。该方法与上面在 ALIGNED_DAY_OF_WEEK_IN_MONTH 中描述的年、月和周相同。处理完年、月和周后,星期几将调整为下一个或相同的匹配星期几。
      • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 如果所有三个都存在,则将它们组合起来形成一个日期。在所有三种模式中,YEAR 都经过验证。如果模式宽松,则日期的组合方式相当于在所请求年份的第一天创建一个日期,然后添加以周为单位的差异,然后以天为单位。如果模式是智能或严格,则所有三个字段都将验证到它们的外部范围。然后以相当于在所请求年份的第一天创建一个日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日期和星期的调整是否未更改年份。
      • YEARALIGNED_WEEK_OF_YEARDAY_OF_WEEK - 如果所有三个都存在,则将它们组合起来形成一个日期。该方法与上面在 ALIGNED_DAY_OF_WEEK_IN_YEAR 中描述的年和周相同。一旦处理了年和周,星期几就会调整为下一个或相同的匹配星期几。

      默认实现适用于大多数日历系统。如果发现 ChronoField.YEAR_OF_ERA 没有 ChronoField.ERA ,则使用 Chronology.eras() 中的最后一个纪元。该实现假定每周有 7 天,每月的第一天值为 1,每年的第一天值为 1,并且月份和年份的第一天始终存在。

      指定者:
      resolveDate 在接口 Chronology
      重写:
      resolveDate 在类 AbstractChronology
      参数:
      fieldValues - 字段到值的映射,可以更新,不为空
      resolverStyle - 请求的解析类型,不为空
      返回:
      解决日期,如果信息不足以创建日期则为 null
    • isIsoBased

      public boolean isIsoBased()
      ThaiBuddhistChronology 是基于 ISO 的年表,它支持 IsoFields 中的字段,例如 DAY_OF_QUARTER QUARTER_OF_YEAR
      指定者:
      isIsoBased 在接口 Chronology
      返回:
      true
      自从:
      19
      参见: