年份和年代有什么区别?

What is the difference between year and year-of-era?

DateTimeFormatter class 文档为年份和 y 年份定义了单独的符号 uhttps://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

year 和 year-of-era 有什么区别?

答案就在 IsoChronology

的文档中
  • era - 有两个时代,'Current Era' (CE) 和 'Before Current Era' (BCE)。
  • 纪元年 - 纪元年与当前 CE 纪元的预测年相同。对于 ISO 时代之前的 BCE 时代,随着时间的推移,年份从 1 向上增加。
  • proleptic-year - proleptic 年与当前纪元的纪元年相同。对于前一个时代,年份为零,然后是负值。

u 会给你预产年。 y会给你时代的年份。

区别主要是公元前时代的年份。第 0 年实际上是公元前 1 年,紧随其后的是第 1 年,即公元 1 年。预兆年份可以为负数,纪元年份不能为负数

下面是一个片段,有助于直观地了解它的工作原理:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("'proleptic' : u '= era:' y G");

for (int i = 5; i > -6 ; i--) {
    LocalDate localDate = LocalDate.of(i, 3, 14);
    System.out.println(formatter.format(localDate));
}

输出:

proleptic : 5 = era: 5 AD
proleptic : 4 = era: 4 AD
proleptic : 3 = era: 3 AD
proleptic : 2 = era: 2 AD
proleptic : 1 = era: 1 AD
proleptic : 0 = era: 1 BC
proleptic : -1 = era: 2 BC
proleptic : -2 = era: 3 BC
proleptic : -3 = era: 4 BC
proleptic : -4 = era: 5 BC
proleptic : -5 = era: 6 BC