0
点赞
收藏
分享

微信扫一扫

java8 时间模板中 year 和 year-of-era 的不同

云竹文斋 2023-08-13 阅读 63

Java8在表示时间的时候引入了一个u激发了我的好奇心,下面给大家讲解下两个的不同: image.png

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表示相对于纪元的年份。需要注意二者的区别,在使用时按需选择合适的字段。

举报

相关推荐

0 条评论