0.码仙励志
旁观者的姓名永远爬不到比赛的计分板上。
1.Java日期中YYYY与yyyy的区别
今天是2021的最后一天,正好今天有空,可以记录一下前几天发现的一个问题。
问题描述:前几天(2021年)发现服务器上的一个获取当前日期的方法获取到了2022年是时间,首先想到的就是服务器时间是不是不准了,经过排查,发现不是服务器的问题,而是因为获取当前时间把yyyy写成了YYYY。
我们用代码案例来描述一下:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* java日期中YYYY与yyyy的区别
*/
public class DateTest {
public static void main(String[] args) {
DateFormat lowerCase = new SimpleDateFormat("yyyy-MM-dd");
DateFormat upperCase = new SimpleDateFormat("YYYY-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(2021, Calendar.DECEMBER, 19);
for (int i = 1; i < 22; i++) {
System.out.println(lowerCase.format(calendar.getTime()) + "=========" + upperCase.format(calendar.getTime()));
calendar.add(Calendar.DATE, 1);
}
}
}
运行结果如下:
2021-12-19=========2021-12-19
2021-12-20=========2021-12-20
2021-12-21=========2021-12-21
2021-12-22=========2021-12-22
2021-12-23=========2021-12-23
2021-12-24=========2021-12-24
2021-12-25=========2021-12-25
2021-12-26=========2022-12-26
2021-12-27=========2022-12-27
2021-12-28=========2022-12-28
2021-12-29=========2022-12-29
2021-12-30=========2022-12-30
2021-12-31=========2022-12-31
2022-01-01=========2022-01-01
2022-01-02=========2022-01-02
2022-01-03=========2022-01-03
2022-01-04=========2022-01-04
2022-01-05=========2022-01-05
2022-01-06=========2022-01-06
2022-01-07=========2022-01-07
2022-01-08=========2022-01-08
从运行结果可以分析出来,问题从2021-12-26开始发生。
我们先上一张日历图再分析问题。
从图中可以发现,2021-12-26和2022-01-01在同一周。
经过查阅资料得知:
y:year-of-era;正正经经的年,即元旦过后
Y:week-based-year;只要本周跨年,那么这周就算入下一年
就比如说 2021-12-26 到 2021-12-31 这几天是跨年的一周,那使用 YYYY 的话会显示 2022,使用 yyyy 则会从 2022-01-01 才开始算是 2022。