欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
}

 

相关标签: Calendar