Java8在表示时间的时候引入了一个u激发了我的好奇心,下面给大家讲解下两个的不同:
year字段表示公历年份,其值可以是正数或负数,从-999,999,999到999,999,999。 year-of-era字段表示日历纪元内的年份,其值范围从1到正无穷大。 两者的区别在于:
- year字段直接表示公历年份,不受纪元的影响。如公元前1年的year值为-1。
- year-of-era字段表示相对于纪元的年份。需要指定一个纪元(Era),才能确定年份的绝对值。在Java 8中,默认的纪元为公元。如公元前1年的yearOfEra值为1。
示例:
// year字段
LocalDate date1 = LocalDate.of(-1, 1, 1);
int year1 = date1.getYear(); // -1
// yearOfEra字段
LocalDate date2 = LocalDate.of(-1, 1, 1);
int yearOfEra2 = date2.getYearOfEra(); // 1
// 在指定纪元前1年
ChronoLocalDate japaneseDate = JapaneseDate.of(1, 1, 1);
int yearOfEra3 = japaneseDate.getYearOfEra(); // 1
//定义模板 使用year-of-era
DateTimeFormatter.ofPattern("uuuu-MM-dd", Locale.CHINA);
//定义模板 使用year
DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
从示例可以看出,year表示公历年份,year-of-era表示相对于纪元的年份。需要注意二者的区别,在使用时按需选择合适的字段。
标签:年份,999,字段,era,year,java8,纪元 From: https://blog.51cto.com/u_15527112/7069012