Calendar根据输入时间查询月初、月末日期(两种方法)
程序员文章站
2022-05-15 09:53:33
...
经常用到查询月初月末方法,平时都是在网上copy,今天把平时copy的方法总结一下
第一种方法:
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static void main(String[] args) {
String selectDate = "2018-08-09";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
if (StringUtils.isNotEmpty(selectDate)) {// 输入日期不为空,set到cal中
try {
cal.setTime(sdf.parse(selectDate));
} catch (ParseException e) {
e.printStackTrace();
}
} else {// 输入日期为空,去当前日期
cal.setTime(new Date());
}
String start = "";// 月初日期
String end = "";// 月末日期
cal.set(Calendar.DAY_OF_MONTH, 1);// 取设置的cal的当月第一天
start = sdf.format(cal.getTime());
cal.add(Calendar.MONTH, 1);// 取设置的cal的下月对应日期,上面已经将cal日期设置成当月第一天,所以这里取到的是下月月初日期,若cal之前设置的2018-01-31,这里会取到2018-02-28,也就是说下个月的天数不足时,就只能取到下个月的月末,若cal之前设置的2018-02-28,这里会取到2018-03-28,下个月的天数足够多时,就正常取下个月对应日期
cal.set(Calendar.DAY_OF_MONTH, 0);// 取设置的cal的上月最后一天
end = sdf.format(cal.getTime());
System.out.println("start:"+ start);// 输出月初日期 2018-08-01
System.out.println("end:"+ end);// 输出月末日期 2018-08-31
}
第二种方法 :
public static void main(String[] args) {
String selectDate = "2018-08-09";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
if (StringUtils.isNotEmpty(selectDate)) {
try {
cal.setTime(sdf.parse(selectDate));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
cal.setTime(new Date());
}
String start = "";
String end = "";
System.out.println("actualMinimum:"+ cal.getActualMinimum(Calendar.DAY_OF_MONTH));// 当月最小天数 输出为1
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));// 设置cal为当月最小日期
start = sdf.format(cal.getTime());
System.out.println("actualMaximum:"+ cal.getActualMaximum(Calendar.DAY_OF_MONTH));// 当月最大天数 输出为31
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));// 设置cal为当月最大日期
end = sdf.format(cal.getTime());
System.out.println("start:"+ start);// 输出月初日期 2018-08-01
System.out.println("end:"+ end);// 输出月末日期 2018-08-31
}
下一篇: JavaScript获取最近几个月的年月