本文所有源码的jdk版本是:jdk-13.0.1
Chronology接口代表日历系统接口,实现这个接口的类表示某一个日历系统。
Chronology接口的官方文档:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/time/chrono/Chronology.html
世界上有很多不同的日历系统。其中我们日常使用的公历属于ISO日历系统,这个是世界通用的标准日历系统。除此之外还有非通用的,比如日本历、泰国日历、中华民国日历、伊斯兰历、农历等。
java已经写好了一些类代表一些常用的日历系统:
其中IsoChronology类就是代表ISO日历系统。HijrahChronology是伊斯兰日历系统,JapaneseChronology是日本历,MinguoChronology是民国历,ThaiBuddhistChronology是泰国佛教历。除了ISO日历系统,其他日历系统我们都不怎么用,因此不作介绍。而java的日期依赖的就是ISO日历系统。
1.1 IsoChronology类的属性
这里介绍其中一个静态属性:
/**
* Singleton instance of the ISO chronology.
*/
public static final IsoChronology INSTANCE = new IsoChronology();
这里用了单例设计模式,因为日历系统只需要一个就够了。这个类的构造方法是私有的,所以获取ISO日历系统实例的方法只有:
public static void main(String[] args) {
IsoChronology iso=IsoChronology.INSTANCE;
}
1.2 IsoChronology类的方法
获取IsoChronology类所代表的日历系统的ID和类型
public static void main(String[] args) {
IsoChronology iso=IsoChronology.INSTANCE;
System.out.println(iso.getId());//ISO
System.out.println(iso.getCalendarType());//iso8601
}
用日历系统创建本地LocalDate日期对象,传入时代对象、年、月、日
public static void main(String[] args) {
IsoChronology iso=I