public interface Chronology extends Comparable<Chronology>
主要日期和时间的数据接口是建立在标准的日历系统上的。在幕后操作,代表一个日历系统的一般概念。例如,日本,Minguo,泰国佛教及其他。
大多数其他日历系统也运行在一年,一个月和一天的共同概念,与地球周围的太阳,和Moon在地球周围的周期。这些共享的概念定义的ChronoField
和可供使用的任何Chronology
实施:
localdate聚类分析=…thaibuddhistdate thaidate =…国际isoyear =聚类分析,得到(chronofield。年);国际thaiyear = thaidate。得到(chronofield。年);如图所示,虽然日期对象在不同的日历系统,由不同的
Chronology
实例表示的,都可以使用相同的常数
ChronoField
查询。为充分讨论这个问题的意义,看到
ChronoLocalDate
。在一般情况下,建议使用已知的基于ISO
LocalDate
,而不是
ChronoLocalDate
。
而Chronology
对象通常使用ChronoField
是基于一个时代,一年一年的时代,月,日一日月模型,这是不需要的。一个Chronology
实例可能代表完全不同的日历系统,如玛雅。
在实践中,这Chronology
实例也作为一个工厂。的of(String)
方法允许实例要抬头的标识符,而ofLocale(Locale)
查找方法允许通过现场。
的Chronology
实例提供了一种方法来创建ChronoLocalDate
实例。日期类用于操作特定日期。
dateNow()
dateNow(clock)
dateNow(zone)
date(yearProleptic, month, day)
date(era, yearOfEra, month, day)
dateYearDay(yearProleptic, dayOfYear)
dateYearDay(era, yearOfEra, dayOfYear)
date(TemporalAccessor)
Chronology
写作,
ChronoLocalDate
和
Era
。的逻辑具体到日历系统绝大多数都会在
ChronoLocalDate
。作为一个工厂的
Chronology
类。
允许额外的年表发现,使用的ServiceLoader
。文件必须被添加到名称“java的META-INF/services
目录。时间。时间。年表的上市类的实现。看到serviceloader上加载更多的细节服务。通过ID或calendartype查找,系统提供的日历发现首先由应用程序提供的日历。
每个年代都必须定义一个在系统中是唯一的一个年代。如果时间代表一个由CLDR规范然后日历类型为CLDR型连接,定义的日历系统,如果适用,CLDR变异,
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Chronology other)
把这个年代与另一个年代比较。
|
default ChronoLocalDate |
date(Era era, int yearOfEra, int month, int dayOfMonth)
从时代、年代、年月、月日的一年,在这个年代获得一个地方日期。
|
ChronoLocalDate |
date(int prolepticYear, int month, int dayOfMonth)
从预期今年年表本地日期,年、月、日月。
|
ChronoLocalDate |
date(TemporalAccessor temporal)
从另一个时间对象在这个时间表中获得一个本地日期。
|
ChronoLocalDate |
dateEpochDay(long epochDay)
在这个年代中获得一个当地日期,从时代的一天。
|
default ChronoLocalDate |
dateNow()
在默认时区中从系统时钟中获得当前本地日期。
|
default ChronoLocalDate |
dateNow(Clock clock)
从指定的时钟中获取当前本地日期。
|
default ChronoLocalDate |
dateNow(ZoneId zone)
从指定时区中的系统时钟中获取当前本地日期。
|
default ChronoLocalDate |
dateYearDay(Era era, int yearOfEra, int dayOfYear)
在这个年代,从时代、时代和一年的一天中获得一个地方日期。
|
ChronoLocalDate |
dateYearDay(int prolepticYear, int dayOfYear)
从预期年日年这个年表本地日期字段。
|
boolean |
equals(Object obj)
检查这个年代是否等于另一个年代。
|
Era |
eraOf(int eraValue)
从数字值创建时间顺序的对象。
|
List<Era> |
eras()
获取时代列表的年代。
|
static Chronology |
from(TemporalAccessor temporal)
获得
Chronology 实例从一个时空对象。
|
static Set<Chronology> |
getAvailableChronologies()
返回可用的年表。
|
String |
getCalendarType()
获取日历系统的日历类型。
|
default String |
getDisplayName(TextStyle style, Locale locale)
获取本年代的文本表示。
|
String |
getId()
获取时间顺序的标识。
|
int |
hashCode()
这个年代的一个哈希代码。
|
boolean |
isLeapYear(long prolepticYear)
检查指定的年份是否为一个跳跃年份。
|
default ChronoLocalDateTime<? extends ChronoLocalDate> |
localDateTime(TemporalAccessor temporal)
从另一个时间对象中获得这个时间表中的本地日期时间。
|
static Chronology |
of(String id)
获得
Chronology 实例从年代学的ID或日历系统类型。
|
static Chronology |
ofLocale(Locale locale)
获得
Chronology 实例从现场。
|
default ChronoPeriod |
period(int years, int months, int days)
根据几年、几个月和几天的时间来获得这个年代的一段时间。
|
int |
prolepticYear(Era era, int yearOfEra)
计算给定的时代,今年预期年。
|
ValueRange |
range(ChronoField field)
获取指定字段的有效值的范围。
|
ChronoLocalDate |
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解决
ChronoField 值解析到日期在解析。
|
String |
toString()
作为一个
String 输出这个年表。
|
default ChronoZonedDateTime<? extends ChronoLocalDate> |
zonedDateTime(Instant instant, ZoneId zone)
从一个
Instant 这一
ChronoZonedDateTime 年表。
|
default ChronoZonedDateTime<? extends ChronoLocalDate> |
zonedDateTime(TemporalAccessor temporal)
得到此年表
ChronoZonedDateTime 来自另一个时空对象。
|
static Chronology from(TemporalAccessor temporal)
Chronology
实例从一个时空对象。
这获得一个基于指定的时间的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以Chronology
实例。
转换将使用TemporalQueries.chronology()
获得年表。如果指定的时间对象没有年表,IsoChronology
返回。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询中的签名,Chronology::from
。
temporal
-转换时间,不空
DateTimeException
如果无法转换到一个
Chronology
static Chronology ofLocale(Locale locale)
Chronology
实例从现场。
这将返回一个Chronology
基于指定的区域,通常返回IsoChronology
。其他日历系统只返回,如果他们在区域设置明确的选择。
的Locale
类提供本地化的应用程序范围的有用信息的访问。这包括语言和区域,如“恩国标”的英语在大不列颠使用。
的Locale
类还支持扩展机制,可以用来确定一个日历系统。该机制是一种键-值对的形式,其中日历系统有键“钙”。例如,现场“en-jp-u-ca-japanese”代表着英语语言的使用在日本与日本的日历系统。
这种方法找到所需的日历系统的方式相当于通过“CA”Locale.getUnicodeLocaleType(String)
。如果“CA”的关键是不存在的,然后IsoChronology
返回。
请注意,此方法的行为不同于老Calendar.getInstance(Locale)
方法。如果该方法接收场所“th_th”将返回BuddhistCalendar
。相比之下,这个方法将返回IsoChronology
。通过现场“th-th-u-ca-buddhist”为法会导致泰国佛历系统,因此推荐的方法前进的泰国日历系统定位。
类似的,但更简单的情况发生在日本日历系统。现场“jp_jp_jp”已被用于访问日历。然而,不像泰国现场,“ja_jp_jp”是由Locale
自动转换为现代的推荐形式的“ja-jp-u-ca-japanese”。因此,有这种方法和行为Calendar#getInstance(Locale)
之间无差异。
locale
-现场使用获得的日历系统,不为空
DateTimeException
如果现场无法找到指定的日历
static Chronology of(String id)
Chronology
实例从年代学的ID或日历系统类型。
这将返回一个基于身份证或类型的时间表。唯一标识的chronology ID
年表。的calendar system type
由CLDR规范定义。
时间可能是一个系统或通过年表年表serviceloader配置应用程序提供。
由于某些日历可以自定义,通常是指默认自定义的身份或类型。比如,公历可以有多个割接始于朱利安,但查找只提供了默认的割接日期。
id
-年代学ID或日历系统类型,不为空
DateTimeException
-如果不能发现年表
static Set<Chronology> getAvailableChronologies()
每个返回的Chronology
可用的系统。年表的设置包括系统通过serviceloader年表年表和任何配置的应用提供。
String getId()
ID唯一地标识Chronology
。它可以用来查找Chronology
使用of(String)
。
getCalendarType()
String getCalendarType()
日历类型的标识符和Unicode CLDR现场数据定义的标记语言(LDML)规格唯一识别一个日历。是的getCalendarType
CLDR日历类型而不同,连接如果适用,附加分“-”。日历类型用于查找Chronology
使用of(String)
。
getId()
default ChronoLocalDate date(Era era, int yearOfEra, int month, int dayOfMonth)
date(int, int, int)
。
era
-为年表正确类型的时代,不为空
yearOfEra
-时代年表年
month
-年年表月
dayOfMonth
-月纪年日
DateTimeException
如果无法创建日期
ClassCastException
-如果
era
不是为年表正确的类型
ChronoLocalDate date(int prolepticYear, int month, int dayOfMonth)
prolepticYear
的年表,预期年
month
-年年表月
dayOfMonth
-月纪年日
DateTimeException
如果无法创建日期
default ChronoLocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
dateYearDay(int, int)
。
era
-为年表正确类型的时代,不为空
yearOfEra
-时代年表年
dayOfYear
-年年表天
DateTimeException
如果无法创建日期
ClassCastException
-如果
era
不是为年表正确的类型
ChronoLocalDate dateYearDay(int prolepticYear, int dayOfYear)
prolepticYear
的年表,预期年
dayOfYear
-年年表天
DateTimeException
如果无法创建日期
ChronoLocalDate dateEpochDay(long epochDay)
EPOCH_DAY
的定义是所有的日历系统相同,因此可以用于转换。
epochDay
时代的天
DateTimeException
如果无法创建日期
default ChronoLocalDate dateNow()
这将查询system clock
在默认时区获取当前日期。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
dateNow(Clock)
。
DateTimeException
如果无法创建日期
default ChronoLocalDate dateNow(ZoneId zone)
这将查询system clock
获取当前日期。指定时区避免依赖于默认时区。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
dateNow(Clock)
。
zone
-区ID使用,不为空
DateTimeException
如果无法创建日期
default ChronoLocalDate dateNow(Clock clock)
这将查询指定的时钟,以获得当前日期-今天。使用这种方法允许使用一个备用时钟进行测试。备用时钟可采用dependency injection
。
date(TemporalAccessor)
)}。
clock
-时钟使用,不为空
DateTimeException
如果无法创建日期
ChronoLocalDate date(TemporalAccessor temporal)
这获得一个日期,在此基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoLocalDate
实例。
转换通常用EPOCH_DAY
领域,这是标准化的日历系统。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::date
。
temporal
-转换时间的对象,不为空
DateTimeException
如果无法创建日期
ChronoLocalDate.from(TemporalAccessor)
default ChronoLocalDateTime<? extends ChronoLocalDate> localDateTime(TemporalAccessor temporal)
这在这个时间根据指定的时间来获得一个日期时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoLocalDateTime
实例。
转换提取物结合ChronoLocalDate
从时空对象的LocalTime
。实现允许执行优化,如访问这些字段,这些字段相当于相关对象。结果使用这个年代。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::localDateTime
。
temporal
-转换时间的对象,不为空
DateTimeException
如果无法创建日期时间
ChronoLocalDateTime.from(TemporalAccessor)
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(TemporalAccessor temporal)
ChronoZonedDateTime
来自另一个时空对象。
这获得一个分区的日期时间,在此基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoZonedDateTime
实例。
转换将首先从时态对象获得ZoneId
,回落到一个ZoneOffset
如果必要。然后它会试图获得一个Instant
,回落到ChronoLocalDateTime
如果必要。结果将是结合ZoneId
或ZoneOffset
与Instant
或ChronoLocalDateTime
。实现允许执行优化,如访问这些字段,这些字段相当于相关对象。结果使用这个年代。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::zonedDateTime
。
temporal
-转换时间的对象,不为空
DateTimeException
如果无法创建日期时间
ChronoZonedDateTime.from(TemporalAccessor)
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(Instant instant, ZoneId zone)
Instant
这一
ChronoZonedDateTime
年表。
这获得一个分区的日期时间与指定的相同的时间。
instant
-创建日期时间的瞬间,不为空
zone
的时区,不空
DateTimeException
-如果结果超过支持的范围
boolean isLeapYear(long prolepticYear)
一个跨越是一年比一个更长的长度比正常。确切的意义是根据以下约束条件确定的。
prolepticYear
-检查预期的一年,距离没有验证
int prolepticYear(Era era, int yearOfEra)
本文结合时代和年时代为单预期年场。
如果时间使时代的积极利用,如JapaneseChronology
然后时代的年会与时代的验证。其他的年表,验证是可选的。
era
-为年表正确类型的时代,不为空
yearOfEra
-时代年表年
DateTimeException
如果无法转换为预期的一年,如一年的时代是无效的
ClassCastException
-如果
era
不是为年表正确的类型
Era eraOf(int eraValue)
时代是,从概念上说,最大的划分的时间线。大多数日历系统有一个单一的时代划分的时间线分为两个时代。然而,有些人有多个时代,如一个为每个领导人的统治。确切的意义是根据以下约束条件确定的。
在使用中必须1970-01-01时代价值1。后来的时代必须有更高的价值。早期时代必须有顺序较低的价值观。每个年代必须引用枚举或类似的独生子女提供的时代价值。
此方法返回指定时代值的正确类型的单例时代。
eraValue
的时代价值
DateTimeException
如果无法创建时期
List<Era> eras()
大多数日历系统都有一个时代,在这一年内有意义。如果日历系统不支持“时代”的概念,则必须返回一个空列表。
ValueRange range(ChronoField field)
所有字段可以表示为一个long
整数。此方法返回一个对象,该对象描述该值的有效范围。
请注意,结果只描述了最小值和最大值的有效值,重要的是不要对它们进行太多的阅读。例如,可能在字段无效的范围内的值。
这种方法将返回一个结果,是否年代支持该字段。
field
-现场得到的范围,不为空
DateTimeException
如果不能得到的领域范围
default String getDisplayName(TextStyle style, Locale locale)
返回用于标识该时间顺序的文本名称,用于向用户演示文稿。参数控制返回的文本和区域设置的样式。
style
-文本所需的风格,不要空
locale
-现场使用,不为空
ChronoLocalDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
ChronoField
值解析到日期在解析。
最TemporalField
实现使用解决方法在现场解决。相比之下,在ChronoField
类定义,只有相对的意义领域的年表。因此,ChronoField
日期字段的解决在特定年代的语境。
默认的实现,说明了典型的解决行为,提供AbstractChronology
。
fieldValues
-字段值的Map,可以更新,不为空
resolverStyle
-解决请求的类型,不为空
DateTimeException
如果日期不能解决,通常是因为在输入数据冲突
default ChronoPeriod period(int years, int months, int days)
使用指定的年、月和日,此返回一个与这个年代挂钩的时期。所有提供的年表使用基于年、月和日,但ChronoPeriod
API允许期间要使用其他单位代表。
range(ChronoField)
获得一年的月数。如果一年内的月数是固定的,那么加法、减法和正规化的计算方法是略有不同的。
如果实施一个不寻常的日历系统,不是基于年、月、日,或者你想直接控制,然后ChronoPeriod
接口必须直接实现。
返回的周期是不可变的和线程安全的。
years
-年数,可能是负面的
months
-年数,可能是负面的
days
-年数,可能是负面的
int compareTo(Chronology other)
先按顺序先按顺序的顺序进行比较,然后通过特定的子类的任何附加信息。这是“等于”一致,所定义的Comparable
。
compareTo
接口
Comparable<Chronology>
other
-相比其他年表,不空
boolean equals(Object obj)
比较是基于对象的整个状态。
equals
方法重写,继承类
Object
obj
-检查对象,空返回false
Object.hashCode()
,
HashMap
int hashCode()
哈希代码应该基于对象的整个状态。
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.