Java时间模式中'yy'和'YY'之间的区别

use*_*029 7 java time simpledateformat

从文档SimpleDateTimePattern来看,yy应该与YY.

今天是Dec 30, 2019,现在我们得到YY今天是20yy今天是19。Java Time PatternyyYYJava Time Pattern之间有什么区别?

Mar*_*eel 13

yy是日历年,而YY是周年。根据 1 月 1 日是哪一天,一周年可能与日历年不同。例如,请参阅ISO-8601 周年

今天(2019 年 12 月 30 日)就是一个很好的例子,日历年是 2019,但周年是 2020,因为本周是 2020 年的第 1 周。所以yy将导致19,而YY导致20

维基百科页面上一年第一周的定义:

第 01 周的 ISO 8601 定义是公历年的第一个星期四在其中的那一周。以下基于本周属性的定义相互等效,因为 ISO 周从星期一开始:

  • 这是第一周的大部分(4 天或更多)天数在 1 月。
  • 它的第一天是离 1 月 1 日最近的星期一。
  • 其中有 1 月 4 日。因此,最早可能的第一周从 12 月 29 日星期一(前公历年)延长到 1 月 4 日星期日,最晚可能的第一周从 1 月 4 日星期一延长到 1 月 10 日星期日。
  • 如果星期六、星期日和 1 月 1 日不是工作日,则它包含一年中的第一个工作日。

如果 1 月 1 日是星期一、星期二、星期三或星期四,则它在第 01 周。如果 1 月 1 日是星期五,则它是上一年第 53 周的一部分。如果是星期六,则是上一年最后一周的一部分,平年编号为 52,闰年编号为 53。如果是在星期日,则是上一年第 52 周的一部分。

一些地区,例如美国,不遵循 ISO-8601,因为他们使用星期日作为一周的第一天,但​​他们对周年有类似的规则。