年份和年份有什么区别?

gle*_*rup 56 java-8 java-time

DateTimeFormatter类文档定义了不同的符号u为一年,y一年的时代:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

年份和年份有什么区别?

bow*_*ore 60

答案在于IsoChronology的文档

  • 时代 - 有两个时代,"当代时代"(CE)和"当前时代"(BCE).
  • 年代 - 年代与当前CE时代的预感年相同.对于ISO时代之前的BCE时代,随着时间的推移,年份从1上升.
  • 预感年 - 预感年与当前时代的年份相同.对于前一个时代,年份为零,然后是负值.

u会给你一个过敏的一年. y会给你一个时代的那一年.

这种差异主要是在BC时代的几年.预感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));
}
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

  • 其他年表也可以有自己的时代,尤其是[日本年表](https://docs.oracle.com/javase/8/docs/api/java/time/chrono/JapaneseChronology.html) (7认同)
  • 谢谢。我在这里找到了进一步的讨论:http://docs.oracle.com/javase/8/docs/api/java/time/chrono/ChronoLocalDate.html http://docs.oracle.com/javase/8/docs/api /java/time/temporal/ChronoField.html#YEAR_OF_ERA (2认同)