Chronology
主日期和时间API建立在ISO日历系统上。 年表在幕后操作以表示日历系统的一般概念。 例如,日本人,民国人,泰国人和其他人。
大多数其他日历系统也按照年,月,日的共同概念运作,与太阳周围的地球周围和地球周围的月球相关联。 这些共享概念由ChronoField定义,可供任何Chronology
实现使用:
LocalDate isoDate = ...
ThaiBuddhistDate thaiDate = ...
int isoYear = isoDate.get(ChronoField.YEAR);
int thaiYear = thaiDate.get(ChronoField.YEAR);
如图所示,尽管日期对象位于不同的日历系统中,由不同的Chronology
实例表示,但两者都可以使用ChronoField
上的相同常量进行ChronoField
。
有关此含义的完整讨论,请参阅ChronoLocalDate 。
一般来说,建议是使用已知的基于ISO的LocalDate
,而不是ChronoLocalDate
。
虽然Chronology
对象通常使用ChronoField
,并且基于时代,年份,月份,日期的日期模型,但这不是必需的。 Chronology
实例可能代表完全不同类型的日历系统,例如Mayan。
实际上, 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 。 必须将文件添加到META-INF/services
目录中,并使用名称“java.time.chrono.Chronology”列出实现类。 有关服务加载的更多详细信息,请参阅ServiceLoader。 对于按id或calendarType查找,系统首先会找到系统提供的日历,然后是应用程序提供的日历。
每个年表都必须定义一个在系统中唯一的年表ID。 如果年表表示由CLDR规范定义的日历系统,则日历类型是CLDR类型和CLDR变体(如果适用)的串联。
上一篇: 龙潮归来》中的醉生技能效果列表
下一篇: 逆水寒手游》降龙在手抽髓获取攻略
推荐阅读