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;
	}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章