Java 8 年份和年代之间的区别是什么?

Java 8 年份和年代之间的区别是什么?,java-8,java-time,Java 8,Java Time,DateTimeFormatter类文档定义了年份和纪年的单独符号u: 年份和纪年之间的区别是什么?答案在于 纪元-有两个纪元,“当前纪元”(CE)和“当前纪元之前”(BCE) 纪年-纪年与当前CE纪年的起始年相同。对于ISO纪元之前的BCE纪元,随着时间的推移,年份从1增加到1 序言年-序言年与当前纪元的纪元年相同。对于前一个时代,年份为零,然后为负值 u将为您提供第一年。 y将为您提供该时代的年份 这种差异在公元前几年主要是重要的。公元前0年实际上是公元前1年,紧接着是公元前1年。公元前

DateTimeFormatter
类文档定义了年份和纪年的单独符号
u


年份和纪年之间的区别是什么?

答案在于

  • 纪元-有两个纪元,“当前纪元”(CE)和“当前纪元之前”(BCE)
  • 纪年-纪年与当前CE纪年的起始年相同。对于ISO纪元之前的BCE纪元,随着时间的推移,年份从1增加到1
  • 序言年-序言年与当前纪元的纪元年相同。对于前一个时代,年份为零,然后为负值
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

@是的。还有第三个符号Y表示基于周的年份。我知道这样做的动机。但这并不能回答我关于u和y之间的区别的问题。后面还有一个复制品,上面还有几句话:谢谢。我在这里发现了进一步的讨论:其他年表也可以有自己的时代,特别是