在文档SimpleDateTimePattern中,yy应该与YY相同。
今天是Dec 30, 2019,今天是YY是20,yy代表今天是19。在Java时间模式中,yy和YY有什么区别?
发布于 2019-12-30 08:15:45
yy是日历年,而YY是一周年。一周的一年可能与日历年不同,取决于一月的第一天是哪一天。例如,请参见ISO-8601周年。
今天(2019年12月30日)是一个很好的例子,公历年是2019年,而周年份是2020年,因为这周是2020年的第一周。因此,yy将导致19,而YY将导致20。
维基百科页面对一年的第一周的定义
ISO 8601定义的第01周是一个星期与公历年的第一个星期四在其中。以下基于本周属性的定义是相互等效的,因为ISO周从星期一开始:
如果1月1日是星期一、星期二、星期三或星期四,那是在第一周。如果1月1日是星期五,那是前一年第53周的一部分。如果是星期六,那是前一年最后一周的一部分,普通年份是52周,闰年是53周。如果是在星期天,那是前一年第52周的一部分。
有些地方,例如美国,不遵守ISO-8601标准,因为在那里他们使用星期日作为一周的第一天,但是他们的周数也有类似的规则。
发布于 2019-12-30 08:14:54
发布于 2019-12-30 08:28:39
它们都代表一年,而yyyy代表日历年度,YYYY代表一周中的一年。
一个例子说明了这一点比以往任何时候都好。
package datetest;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
try {
String[] dates = {"2018-12-01", "2018-12-31", "2019-01-01"};
for (String date: dates) {
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
Date d = dt.parse(date);
SimpleDateFormat dtYYYY = new SimpleDateFormat("YYYY");
SimpleDateFormat dtyyyy = new SimpleDateFormat("yyyy");
System.out.println("For date :" + date + " the YYYY year is : " + dtYYYY.format(d) + " while for yyyy it's " + dtyyyy.format(d));
}
} catch (Exception e) {
System.out.println("Failed with exception: " + e);
}
}
}输出
For date : 2018-12-01 the YYYY year is : 2018 while for yyyy it's 2018
For date : 2018-12-31 the YYYY year is : 2019 while for yyyy it's 2018
For date : 2019-01-01 the YYYY year is : 2019 while for yyyy it's 2019https://stackoverflow.com/questions/59527605
复制相似问题