年份和年份之间有什么区别?


70

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

年份和年份之间有什么区别?



1
@DonLarynx是的。对于基于周的年份,还有第三个符号Y。我知道这样做的动机。但这并不能回答我关于u和y之差的问题。
glerup 2015年

以后会有重复的副​​本,但又有更多答案:uuuu与在JavayyyyDateTimeFormatter格式化模式代码相比?
Ole VV

Answers:


73

答案在于IsoChronology文档

  • 时代-有两个时代,“当前时代”(CE)和“当前时代之前”(BCE)。
  • 年份-年份与当前CE时代的纪念年相同。在ISO时代之前的BCE时代,随着时间的倒退,年份从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


8
其他年表可以有自己的时代也一样,特别是JapaneseChronology
杰弗里Bosboom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.