业务场景:对于可视化、报表开发中,经常会遇到像统计一段时间,比如一个月、每月每天等时间段的数据,同时也会伴有判断当前月份有多少天,诸如2月这种可变性的天数,就引出了所谓:判断当前为平年闰年
所谓闰年,就是指 2 月有 29 天的那一年。闰年同时满足以下条件:
1.年份能被 4 整除。
2.年份若是 100 的整数倍,须被 400 整除,否则是平年。
例如,1900 年能被 4 整除,但是因为其是 100 的整数倍,却不能被 400 整除,所以是平年;而 2000 年就是闰年;1904 年和 2004 年、2008 年等直接能被 4 整除且不能被 100 整除,都是闰年;2014 是平年。
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);//获取当前年份
int month = calendar.get(Calendar.MONTH)+1;//获取当前月份
int day = 0;
boolean flag;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;// 闰年
} else {
flag = false;// 平年
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
default:
if (flag) {
day = 29;
} else {
day = 28;
}
break;
}
也是因为西方文化的原因,一年的第一个月是从“0”开始算起的,一年中12个月份分别是:“0-11”,12指的是下一年的一月份
calendar.set(2016,12,9);
SimpleDateFormat format=new SimpleDateFormat(“yyyy-MM-dd”);
String date=format.format(calendar.getTime());
获得的结果是:2017-01-09
所以 为 calendar 设置“月份(MONTH)”时需要 “-1”
通过 calendar 获取“月份(month)”时需要 “+1”
关于JAVA中calendar.get(Calendar.XXXX)的问题---- 获取时间的问题
calender get方法_Calendar.get()方法— WEEK_OF_YEAR 、MONTH
MySQL----获取当前日期当月第一天,最后一天