java 给一个日期,往后加三天,如果是周末,节假日不算天数。直到加满三天为之,得出日期。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 给一个日期,往后加三天,如果是周末,节假日不算天数。直到加满三天为之,得出日期。相关的知识,希望对你有一定的参考价值。

例如:给出12月1号,通过这些规则,得出日期是12月4号。
给出日期是12月4号.则通过这些规则得出日期 12月9号。(周末两天不算)
给出日期是12月31号,则通过这些规则得出 日期1月6号。(元旦三天不算)

求代码?!?
好像大家都不清楚 节假日,周末怎么得出来,
若是 有个方法 CheckDate(Date da)
可以判断出输入的日期是周末和节假日,
CheckDate方法 是周末或节假日,返回0
不是周末或节假日,返回空。

参考技术A java.util.Calendar很方便使用,看看API即可以 参考技术B public class CalendarTest
//节假日列表
private static List<Calendar> holidayList = new ArrayList<Calendar>();
//周末为工作日
private static List<Calendar> weekendList = new ArrayList<Calendar>();
/**
* @param args
* return void 返回类型
* throws
*/
public static void main(String[] args)
try

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar ca = Calendar.getInstance();
Date d = df.parse("2016-09-15");
ca.setTime(d);//设置当前时间

CalendarTest ct = new CalendarTest();
ct.initHolidayList("2016-09-15");//初始节假日
ct.initHolidayList("2016-09-16");//初始节假日
ct.initHolidayList("2016-09-17");//初始节假日

ct.initWeekendList("2016-09-18");//初始周末为工作日

boolean k = checkHoliday(ca);
System.out.println(k);

catch ( Exception e)
// TODO: handle exception
System.out.println(e.getClass());
e.printStackTrace();




/**
*
* 验证日期是否是节假日
* @param calendar 传入需要验证的日期
* @return
* return boolean 返回类型 返回true是节假日,返回false不是节假日
* throws
*/
public static boolean checkHoliday(Calendar calendar) throws Exception

//判断日期是否是周六周日
if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ||
calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)

//判断日期是否是节假日
for (Calendar ca : weekendList)
if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&
ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&
ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR))
return false;



return true;

//判断日期是否是节假日
for (Calendar ca : holidayList)
if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&
ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&
ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR))
return true;



return false;


/**
*
* 把所有节假日放入list
* @param date 从数据库查 查出来的格式2016-05-09
* return void 返回类型
* throws
*/
public void initHolidayList(String date)

String [] da = date.split("-");

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));
calendar.set(Calendar.MONTH, Integer.valueOf(da[1])-1);//月份比正常小1,0代表一月
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));
holidayList.add(calendar);


/**
* 初始化周末被调整为工作日的数据
*/
public void initWeekendList(String date)
String [] da = date.split("-");

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));
calendar.set(Calendar.MONTH, Integer.valueOf(da[1])-1);//月份比正常小1,0代表一月
calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));
weekendList.add(calendar);




转自:CSDN林朝昆的博客
有空去CSDN上看看你所想要的几乎都有
参考技术C 所以你要知道哪些日子是节假日?难道你要用手输?

Java——获取n个工作日后的日期(这里只除去周末)

我这里是个简单版的,只是去除周末,对于节假日无法自动掌控,需要配置节假日表,因为中国的节假日是每年定一次。
可以参考:获取n个工作后的日期,排除节假日和调休

我的简单版代码如下:

 	public static void main(String[] args) throws ParseException 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date currDay = sdf.parse("2021-09-7");
        System.out.println(getWorkDay(currDay, 30));
    

    public static Date getWorkDay(Date startDate, int workDay) 
        Calendar c1 = Calendar.getInstance();
        c1.setTime(startDate);
        for (int i = 0; i < workDay; i++) 
            c1.set(Calendar.DATE, c1.get(Calendar.DATE) + 1);
            if (Calendar.SATURDAY == c1.get(Calendar.DAY_OF_WEEK) 
            	|| Calendar.SUNDAY == c1.get(Calendar.DAY_OF_WEEK)) 
                workDay++;
                continue;
            
        
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(df.format(c1.getTime()));
        return c1.getTime();
    

以上是关于java 给一个日期,往后加三天,如果是周末,节假日不算天数。直到加满三天为之,得出日期。的主要内容,如果未能解决你的问题,请参考以下文章

用java 进行日期计算,获取当前天+1天,周末节假日不算,在线等待中,十万火急……

Java——获取n个工作日后的日期(这里只除去周末)

Java——获取n个工作日后的日期(这里只除去周末)

Java——获取n个工作日后的日期(这里只除去周末)

Java——获取n个工作日后的日期(这里只除去周末)

从日期中添加或减去天数时如何避免周末或节假日[重复]