如题 在java设置指定日期 可以使用Calendar这个类来实现如下:
Calendar calendar = Calendar.getInstance(); calendar.set(2019, 11, 31); Date strDate = calendar.getTime();
这个strDate却是12月
翻查源码得知
英文不好的我大致也能看的懂 月份是从0开始 即0代表1月
然后我们在来看看SimpleDateFormat这个日期转换:
DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("yyyy-MM-dd: " + formatUpperCase.format(strDate)); formatUpperCase = new SimpleDateFormat("YYYY-MM-dd"); System.out.println("YYYY-MM-dd: " + formatUpperCase.format(strDate));
打印结果:
yyyy-MM-dd: 2019-12-31
YYYY-MM-dd: 2020-12-31
由此可见YYYY和yyyy在转换日期的时是有区别的 不妨查看一下源码即可知道:
y代表year 而Y 代表的确实week year 两者是有却别的
个人理解是:一周开始于周日 截止于周六 而week year 表示这一周所在的年份
所以在使用SimpleDateFormat做日期格式转换的时候YYYY 慎用 尽量使用yyyy