Calendar使用例子:获取上月所有日期和本月(已过)日期

说明:比如当天日期为2019-02-18

运行结果:

----上月所有日期:----
[2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05, 2019-01-06, 2019-01-07, 2019-01-08, 2019-01-09, 2019-01-10, 2019-01-11, 2019-01-12, 2019-01-13, 2019-01-14, 2019-01-15, 2019-01-16, 2019-01-17, 2019-01-18, 2019-01-19, 2019-01-20, 2019-01-21, 2019-01-22, 2019-01-23, 2019-01-24, 2019-01-25, 2019-01-26, 2019-01-27, 2019-01-28, 2019-01-29, 2019-01-30, 2019-01-31]
----本月所有日期:(已过日期)----
[2019-02-01, 2019-02-02, 2019-02-03, 2019-02-04, 2019-02-05, 2019-02-06, 2019-02-07, 2019-02-08, 2019-02-09, 2019-02-10, 2019-02-11, 2019-02-12, 2019-02-13, 2019-02-14, 2019-02-15, 2019-02-16, 2019-02-17]

代码:

public static void main(String[] args) {
		
		String curMon = "2019-02-18";
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		Date curDate = stringToDate(sf, curMon);
		
		//重置时间为上个月的第一天
		c.setTime(curDate);
		c.set(Calendar.DAY_OF_MONTH, 1);
		c.add(Calendar.MONTH, -1);
		//getAllDay的第二个参数为:是否取得当月所有日期
		List<String> preList = getAllDay(c.getTime(), true);
		
		//重置时间为给定时间-1(即2019-02-17)
		c.setTime(curDate);
		c.add(Calendar.DAY_OF_MONTH, -1);
		List<String> curList = getAllDay(c.getTime(), false);
		
		System.out.println("----上月所有日期:----");
		System.out.println(preList.toString());
		System.out.println("----当月所有日期:(截止给定日期)----");
		System.out.println(curList.toString());
	}
	private static Date stringToDate(SimpleDateFormat sdf, String sourceDate) {
		Date date = null;
		try {
			date = sdf.parse(sourceDate);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	private static List<String> getAllDay(Date month, boolean lengthFlag) {
		List<String> list = new ArrayList<String>();
		Calendar cal = Calendar.getInstance();
		cal.setTime(month);
		int maxDate = cal.getActualMaximum(Calendar.DATE);
		if (!lengthFlag) {
			maxDate = cal.get(Calendar.DAY_OF_MONTH);
		}
		cal.set(Calendar.DAY_OF_MONTH, 1);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for (int i = 0; i < maxDate; i++, cal.add(Calendar.DATE, 1)) {
			Date d = cal.getTime();
			String date = sdf.format(d);
			list.add(date);
		}
		return list;
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值