一、获得周五
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了