Calendar 獲得週五日期以及月年的最後一個工作日

一、獲得週五

1.首先要明白,在美國眼裏,周天是第一天

所以通過

        Calendar cal = Calendar.getInstance();
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

獲得的值應該是  星期天對應 1  星期六對應7

2.通過日曆類Calendar,我們可以獲得一週中的時間

        Calendar cal = Calendar.getInstance(); //創建日曆類
        cal.setTime(time);                     //設置目標時間
		Integer dayWeek = cal.get(Calendar.DAY_OF_WEEK);//設置格式爲獲得week
		if (dayWeek.equals(1)) {
			dayWeek = 7;
		}
		cal.add(Calendar.DATE, 13 - dayWeek);//設置在當前時間上做加減
		Date result = cal.getTime();//獲得時間

在這裏我們想要獲得某一個時間的周的週五的日期是多少,那麼我們可以通過Calendar類

如果我們想要獲得下一週的此刻,那麼我們需要在時間上加上7,如果我想要獲得下週五的時間,與我的差值,那麼我需要使用週五的值來減去當前時間+7的值,由於週五在在一週中對應的數字爲6,所以獲得下週五就應該是13-dayWeek。

但是容易發現,因爲周天是1而不是7,所以會導致當爲周天的時候回變成下下週的週五。所以需要判斷是否爲周天

二、獲得月最後一天以及月的最後一個工作日

1.想要獲得月的最後一天,首先要知道一個月有多少天

cal.getActualMaximum(Calendar.DAY_OF_MONTH);//獲得當月共有多少天

繼續就是

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

當然如果你想獲得下個月的最後一天,那麼先增加一個月後,在設置最爲最後一天

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.MONTH, 1);
		cal.set(Calendar.DAY_OF_MONTH)
                cal.getActualMaximum(Calendar.DAY_OF_MONTH));

2.獲得月的最後一個工作日

那麼已經是獲得最後一天了,只要不是週六周天就可以

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.MONTH, -1);
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		int weekDay = cal.get(Calendar.DAY_OF_WEEK);
		switch (weekDay) {
		case 7:
			cal.add(Calendar.DATE, -1);
			break;
		case 1:
			cal.add(Calendar.DATE, -2);
			break;
		}

是週六就回退一天,周天就回退兩天。

三、獲得一年中,最後一個工作日

同理

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.YEAR, -2);
		cal.set(Calendar.DAY_OF_YEAR, cal.getActualMaximum(Calendar.DAY_OF_YEAR));
		int weekDay = cal.get(Calendar.DAY_OF_WEEK);
		switch (weekDay) {
		case 7:
			cal.add(Calendar.DATE, -1);
			break;
		case 1:
			cal.add(Calendar.DATE, -2);
			break;
		}

這裏需要注意,不要講DAY_OF_YEAR 寫成了YEAR了

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