public final class IsoChronology extends AbstractChronology implements Serializable
这个年表定义了ISO日历系统的规则。 该日历系统基于ISO-8601标准,这是实际上的世界日历。
字段定义如下:
Modifier and Type | Field and Description |
---|---|
static IsoChronology |
INSTANCE
ISO年代的单例实例。
|
Modifier and Type | Method and Description |
---|---|
LocalDate |
date(Era era, int yearOfEra, int month, int dayOfMonth)
从时代,年龄,月份和月份的时代获得ISO本地日期。
|
LocalDate |
date(int prolepticYear, int month, int dayOfMonth)
从月度,月份和月份月份获取ISO本地日期。
|
LocalDate |
date(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期。
|
LocalDate |
dateEpochDay(long epochDay)
从时代获取ISO本地日期。
|
LocalDate |
dateNow()
从默认时区的系统时钟获取当前的ISO本地日期。
|
LocalDate |
dateNow(Clock clock)
从指定的时钟获取当前的ISO本地日期。
|
LocalDate |
dateNow(ZoneId zone)
从指定时区的系统时钟获取当前的ISO本地日期。
|
LocalDate |
dateYearDay(Era era, int yearOfEra, int dayOfYear)
从时代,年龄和日期的领域获得ISO本地日期。
|
LocalDate |
dateYearDay(int prolepticYear, int dayOfYear)
从幼稚年份和日期字段获取ISO本地日期。
|
IsoEra |
eraOf(int eraValue)
根据数值创建年代时代对象。
|
List<Era> |
eras()
获取年表的时间列表。
|
String |
getCalendarType()
获取底层日历系统的日历类型 - 'iso8601'。
|
String |
getId()
获取年表的ID - “ISO”。
|
boolean |
isLeapYear(long prolepticYear)
根据ISO培训日历系统规则,检查年份是否是闰年。
|
LocalDateTime |
localDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期时间。
|
Period |
period(int years, int months, int days)
根据几年,几个月和几天的时间表获得一段时间。
|
int |
prolepticYear(Era era, int yearOfEra)
计算年龄和年龄的幼年时期。
|
ValueRange |
range(ChronoField field)
获取指定字段的有效值的范围。
|
LocalDate |
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析解析时解析为
ChronoField 值。
|
ZonedDateTime |
zonedDateTime(Instant instant, ZoneId zone)
从一个
Instant 获得这个年代的ISO分区日期。
|
ZonedDateTime |
zonedDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO分区的日期时间。
|
compareTo, equals, hashCode, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
from, getDisplayName
public static final IsoChronology INSTANCE
public String getId()
ID唯一标识了Chronology
。 它可以用于查找Chronology
使用AbstractChronology.of(String)
。
getId
在接口
Chronology
getCalendarType()
public String getCalendarType()
日历类型是由Unicode区域设置数据标记语言(LDML)规范定义的标识符。 它可以用于查找Chronology
使用AbstractChronology.of(String)
。 它也可以作为语言环境的一部分使用,通过Locale.getUnicodeLocaleType(String)
可以通过键“ca”访问。
getCalendarType
在接口
Chronology
getId()
public LocalDate date(Era era, int yearOfEra, int month, int dayOfMonth)
date
在界面
Chronology
era
- ISO时代,不为空
yearOfEra
- ISO年代
month
- ISO月份
dayOfMonth
- ISO的日期
DateTimeException
- 如果无法创建日期
ClassCastException
-如果类型
era
不
IsoEra
public LocalDate date(int prolepticYear, int month, int dayOfMonth)
date
在界面
Chronology
prolepticYear
- ISO光学年
month
- ISO月份
dayOfMonth
- ISO的日期
DateTimeException
- 如果无法创建日期
public LocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
dateYearDay
中的
Chronology
era
- ISO时代,不为空
yearOfEra
- ISO年代
dayOfYear
- ISO的一年
DateTimeException
- 如果无法创建日期
public LocalDate dateYearDay(int prolepticYear, int dayOfYear)
dateYearDay
在界面
Chronology
prolepticYear
- ISO光学年
dayOfYear
- ISO的一年
DateTimeException
- 如果无法创建日期
public LocalDate dateEpochDay(long epochDay)
dateEpochDay
在界面
Chronology
epochDay
- 纪元日
DateTimeException
- 如果无法创建日期
public LocalDate date(TemporalAccessor temporal)
date
在接口
Chronology
temporal
- 要转换的日期时间对象,不为null
DateTimeException
- 如果无法创建日期
ChronoLocalDate.from(TemporalAccessor)
public LocalDateTime localDateTime(TemporalAccessor temporal)
localDateTime
在界面
Chronology
temporal
- 要转换的日期时间对象,不为null
DateTimeException
- 如果无法创建日期时间
ChronoLocalDateTime.from(TemporalAccessor)
public ZonedDateTime zonedDateTime(TemporalAccessor temporal)
zonedDateTime
在界面
Chronology
temporal
- 要转换的日期时间对象,不为空
DateTimeException
- 如果无法创建日期时间
ChronoZonedDateTime.from(TemporalAccessor)
public ZonedDateTime zonedDateTime(Instant instant, ZoneId zone)
Instant
获得这个年代的ISO分区日期。
zonedDateTime
在界面
Chronology
instant
- 即时创建日期时间,不为null
zone
- 时区,不为空
DateTimeException
- 如果结果超出了支持的范围
public LocalDate dateNow()
dateNow
在界面
Chronology
DateTimeException
- 如果无法创建日期
public LocalDate dateNow(ZoneId zone)
dateNow
在接口
Chronology
zone
- 要使用的区域ID,不为空
DateTimeException
- 如果无法创建日期
public LocalDate dateNow(Clock clock)
这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 替代时钟可以使用dependency injection
引入 。
dateNow
在界面
Chronology
clock
- 要使用的时钟,不为空
DateTimeException
- 如果无法创建日期
public boolean isLeapYear(long prolepticYear)
这种方法在整个时间线上应用目前的闰年规则。 一般来说,一年是一个闰年,如果没有余数可以被四分割。 但是,除了100岁之外,年份可以被分割为100岁,除了年龄可以被400除外。
例如,1904年是一个闰年,可以被4整除。1900年不是一个闰年,因为它可以被100整除,然而2000年是一个闰年,因为它可以被400除数。
计算是应激的 - 将相同的规则应用到远未来很远的地方。 这在历史上是不准确的,但对于ISO-8601标准是正确的。
isLeapYear
在界面
Chronology
prolepticYear
- ISO检查年份
public int prolepticYear(Era era, int yearOfEra)
Chronology
复制
这将时代与时代融为一体的年轻一代。
如果年表积极地使用时代,例如JapaneseChronology
那么年代将在时代得到验证。 对于其他年表,验证是可选的。
prolepticYear
在界面
Chronology
era
- 正确类型为时代的时代,不为空
yearOfEra
- 年代的年代
public IsoEra eraOf(int eraValue)
Chronology
复制
时代在概念上是时间线上最大的一个部门。 大多数日历系统具有将时间线划分为两个时代的单个时期。 然而,有些有多个时代,比如每个领导人统治的时代。 确切的含义由年龄根据以下约束决定。
1970-01-01使用的时代必须具有值1.后来的时代必须具有较高的值。 较早的时间必须具有较低的值。 每个年表必须参考枚举或类似的单身,以提供时代价值观。
该方法返回指定时代值的正确类型的单例时代。
eraOf
在接口
Chronology
eraValue
- 时代价值
public List<Era> eras()
Chronology
复制
大多数日历系统都有一个时代,其中一年有意义。 如果日历系统不支持时间的概念,则必须返回空列表。
eras
在接口
Chronology
public LocalDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
ChronoField
值。
大多数TemporalField
实现使用该字段上的resolve方法来解决。 相比之下, ChronoField
类定义的字段只有相对于年表的意义。 因此, ChronoField
日期字段在具体年表的上下文中解决。
ISO日历系统上的ChronoField
实例解决如下。
EPOCH_DAY
- 如果存在,则转换为LocalDate
,然后将所有其他日期字段与日期进行交叉检查。 PROLEPTIC_MONTH
- 如果存在,那么它被分割成YEAR
和MONTH_OF_YEAR
。 如果模式是严格的或智能的,则该字段被验证。 YEAR_OF_ERA
和ERA
- 如果两者都存在,则它们被组合以形成YEAR
。 在宽松的模式下, YEAR_OF_ERA
范围是无法验证的,在智能和严格的模式下。 该ERA
验证的范围在所有三种模式。 如果只有YEAR_OF_ERA
存在,并且模式是聪明或宽松的,则假定当前时代(CE / AD)。 在严格的模式下,没有假设时代, YEAR_OF_ERA
保持不变。 如果只有ERA
存在,那么它保持不变。 YEAR
, MONTH_OF_YEAR
和DAY_OF_MONTH
-如果所有三个都存在,则它们被组合以形成LocalDate
。 在所有三种模式下, YEAR
都经过验证。 如果模式是聪明的或严格的,则验证月份和日期,日期从1到31.如果模式宽松,那么日期以相当于在1月1日创建日期的方式组合要求的年份,然后加上差异在几个月,然后差异在天。 如果模式是聪明的,并且月的日期大于年月的最大值,则月的日期被调整到最后一个月。 如果模式严格,则三个字段必须形成有效的日期。 YEAR
和DAY_OF_YEAR
- 如果两者都存在,则它们被组合以形成LocalDate
。 在所有三种模式下, YEAR
都经过验证。 如果模式宽松,那么日期将以等于在请求年份的1月1日创建日期的方式组合,然后加上差异。 如果模式是聪明或严格的,那么这两个字段必须形成一个有效的日期。 YEAR
, MONTH_OF_YEAR
, ALIGNED_WEEK_OF_MONTH
和ALIGNED_DAY_OF_WEEK_IN_MONTH
-如果所有四个都存在,则它们被组合以形成LocalDate
。 在所有三种模式下, YEAR
都经过验证。 如果模式宽松,那么日期以相当于在所请求的年份的1月1日创建日期的方式组合,然后加上差异月数,然后加上周差,然后加几天。 如果模式是聪明或严格的,那么所有四个字段都将被验证到其外部范围。 然后将该日期以相当于在所请求的年和月的第一天创建日期的方式组合,然后以数周和数天的数量添加以达到其值。 如果模式严格,则还会验证日期,以检查日和周的调整次数是否不变。 YEAR
, MONTH_OF_YEAR
, ALIGNED_WEEK_OF_MONTH
和DAY_OF_WEEK
-如果所有四个都存在,则它们被组合以形成LocalDate
。 这种方法与上述相同,多年,几个月和几个星期在ALIGNED_DAY_OF_WEEK_IN_MONTH
。 一天一个月,几周和几周已被处理,星期几被调整为下一个或相同的匹配日。 YEAR
, ALIGNED_WEEK_OF_YEAR
和ALIGNED_DAY_OF_WEEK_IN_YEAR
-如果所有三个都存在,则它们被组合以形成LocalDate
。 在所有三种模式下, YEAR
都经过验证。 如果模式宽松,那么日期将以等同于在请求年份的1月1日创建日期的方式组合,然后以周为单位加上差异。 如果模式是聪明或严格的,那么所有三个字段都将被验证到其外部范围。 然后,该日期以相当于在所请求年的第一天创建日期的方式组合,然后以数周和数天添加以达到其值。 如果模式严格,日期也会被验证,以检查日和周的调整没有改变年份。 YEAR
, ALIGNED_WEEK_OF_YEAR
和DAY_OF_WEEK
-如果所有三个都存在,则它们被组合以形成LocalDate
。 该方法是在上述多年,周同ALIGNED_DAY_OF_WEEK_IN_YEAR
。 一天一周的时间一周调整为下一个或相同的匹配日期,一年的时间和周数被处理。 resolveDate
在界面
Chronology
resolveDate
在类别
AbstractChronology
fieldValues
- 可以更新的值的字段映射,不为空
resolverStyle
- 请求的解析类型,不为null
DateTimeException
- 如果日期无法解决,通常是因为输入数据中存在冲突
public ValueRange range(ChronoField field)
Chronology
复制
所有字段都可以表示为long
整数。 此方法返回描述该值的有效范围的对象。
请注意,结果仅描述最小和最大有效值,重要的是不要太多读取它们。 例如,可以在该范围内的值对该字段无效。
该方法将返回结果,无论年表是否支持该字段。
range
在接口
Chronology
field
- 获取范围的字段,不为null
public Period period(int years, int months, int days)
这将使用指定的年份,月份和日期返回与ISO年表相关的期间。 详见Period
。
period
在界面
Chronology
years
- 年数,可能为负数
months
- 年数可能为负数
days
- 年数,可能是负数