一、獲得週五
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了