在Java开发中,有时候需要根据指定月份查询本月开始到结束的数据,这就需要我们得到某月的第一天和最后一天,那如何实现呢?主要使用
java.util.Calendar;
getActualMinimum(Calendar.DAY_OF_MONTH);//获取第一天
getActualMaximum(Calendar.DAY_OF_MONTH);//最后一天
实现代码:
public static void getFirstAndLastDay(int year, int month) {
if(year < 0 || month < 1) {
return;
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
//Calendar月份从0开始
cal.set(Calendar.MONTH, month - 1);
//方便查看
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//获取year年month月的开始一天
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
//设置Calendar为指定月份的第一天
cal.set(Calendar.DAY_OF_MONTH, firstDay);
//输出日期--指定月份第一天
System.out.println(year + "年" + month + "月的第一天:" + sdf.format(cal.getTime()));
//输出日期--指定月份最后一天
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, lastDay);
System.out.println(year + "年" + month + "月的最后一天:" + sdf.format(cal.getTime()));
}
测试代码:
public static void main(String[] args) {
getFirstAndLastDay(2008, 2);
getFirstAndLastDay(2008, 3);
getFirstAndLastDay(2009, 2);
getFirstAndLastDay(2009, 3);
}
输出:
2008年2月的第一天:2008-02-01
2008年2月的最后一天:2008-02-29
2008年3月的第一天:2008-03-01
2008年3月的最后一天:2008-03-31
2009年2月的第一天:2009-02-01
2009年2月的最后一天:2009-02-28
2009年3月的第一天:2009-03-01
2009年3月的最后一天:2009-03-31