日期格式化写得不对,从2020.12.27(周日)开始,会算成2021年。 问题:日期格式化,正确的格式应该是yyyyMMdd,如果写成YYYYMMdd,就会变成2021年
原因:y表示Year,Y表示Week Year
复现代码
public static void main(String[] args) {
// 使用大写 'Y' 表示周年
SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMdd");
// 使用指定日期(2020-12-27,星期日)
LocalDate localDate = LocalDate.of(2020, 12, 27);
Date date = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
System.out.println(date);
String formattedDate = sdf.format(date);
System.out.println("Formatted Date: " + formattedDate);
}
详细说明
https://blog.csdn.net/qq_33391863/article/details/122875879
1.大写的“YYYY” 是week-based year 是ISO-8601规定的,它表示的是当天所在周属于哪一年,比如2021.12.27-2022.1.2 这一周夸年了,所以格式化成下一年了,也就是2022年了。
2.大写的MM是代表的月份,小写的mm是代表的分钟,所以这里是为了区分月份和分钟。
3.大写的D打印出来的时间是这一年中的那一天,小写的d是这个月中的那一天。
4.HH是大写是为了区分时区12小时还是24小时小写的h是12小时制,大写的H是24小时制。