总体思路:
由于节假日每年在变,所以需要罗列出所有的节假日集合A
从B中过滤掉A中的节假日
从B中过滤掉周六周日
最后把B中集合打印
结合思路,所见即所得的代码如下:
//?所有节假日的日期集合,这里你可以自己添加,只写了两个仅供参考(完成思路1)
.filter(localDate?-?!holidays.contains(localDate))
//?过滤其中的周六
.filter(localDate?-?!DayOfWeek.SATURDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))))
.filter(localDate?-?!DayOfWeek.SUNDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))))
.forEach(System.out::println);
打印的结果:
综上:结合新时间API的易用性◆Stream处理集合的快捷性,写出代码还是很简洁的
因为很多的节假日,没有规律性.所以程序实现只有写死日期.
可以做一个配置文件,手工填写假日信息,然后再由java显示出来.
迟来的答案
①周末版本(不含节假日判断)
注意:最下面是使用的 递归算法
/**
*?获得收益时间(获取当前天◆1天,周末不算).
*
*??任意日期
*???if?null?==?date
*/
private?Date?getIncomeDate(Date?date)?throws?NullPointerException{
if?(null?==?date){
throw?new?NullPointerException("the?date?is?null?or?empty!");
}
//对日期的操作,我们需要使用?Calendar?对象
Calendar?calendar?=?new?GregorianCalendar();
calendar.setTime(date);
//◆1天
calendar.add(Calendar.DAY_OF_MONTH,?◆1);
//判断是星期几
int?dayOfWeek?=?calendar.get(Calendar.DAY_OF_WEEK);
Date?incomeDate?=?calendar.getTime();
//递归
return?getIncomeDate(incomeDate);
return?incomeDate;
测试方法:
@Test
public?void?testGetIncomeDate()?throws?ParseException{
String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
SimpleDateFormat?simpleDateFormat?=?new?SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(getIncomeDate(new?Date())));
输出结果:
注意:返回的是 时间◆1的时间,精度是到毫秒 纳秒,如果有特殊需求,需要自己再处理下
if?(isWeekend(calendar)?||?isHoliday(calendar)){
*?判断一个日历是不是周末.
*??the?calendar
private?boolean?isWeekend(Calendar?calendar){
return?true;
return?false;
*?一个日历是不是节假日.
private?boolean?isHoliday(Calendar?calendar){
String?pattern?=?"yyyy-MM-dd";
String?dateString?=?simpleDateFormat.format(calendar.getTime());
//节假日?这个可能不同地区,不同年份?都有可能不一样,所以需要有个地方配置,?可以放数据库,?配置文件,环境变量?等等地方
//这里以配置文件?为例子
ResourceBundle?resourceBundle?=?ResourceBundle.getBundle("holidayConfig");
String?holidays?=?resourceBundle.getString("holiday");
String[]?holidayArray?=?holidays.split(",");
boolean?isHoliday?=?org.apache.commons.lang.ArrayUtils.contains(holidayArray,?dateString);
return?isHoliday;
配置文件:
测试方法 :
*?Testenclosing_type.
*???the?parse?exception
结果:
public?static?boolean?isWeekend(Date?date)?{
Calendar?cal?=?Calendar.getInstance();
cal.setTime(date);
int?result?=?cal.get(Calendar.WEEK_OF_MONTH);
if?(result?==?Calendar.SATURDAY?||?result?==?Calendar.SUNDAY)?{
这段代码只是判断是不是周末,节假日的话只能通过某些数据配置来判断了.节假日是没法计算的.
以上就是土嘎嘎小编为大家整理的java放假代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!