Buscando o próximo dia válido
Eu estou escrevendo um aplicativo java onde eu preciso fazer o seguinte.
Eu tenho que evitar dois dias de uma semana (externamente configurável) dizer TERÇA-FEIRA e SEXTA-FEIRA para fazer algum processamento de lógica de negócios. Eu quero descobrir o próximo dia disponível. Por exemplo: se hoje é TERÇA-FEIRA, eu devo ter QUARTA-FEIRA como próximo disponível ou se hoje é QUINTA-FEIRA, então o próximo disponível deve ser SEGUNDA-FEIRA.
Alguém poderia me guiar resolver isso? Isso parece simples, mas é realmente trickey.
Aqui está o que eu fiz até agora
<code> List<String> exceptionDays = new ArrayList<String>(); exceptionDays.add("SUNDAY"); exceptionDays.add("MONDAY"); exceptionDays.add("FRIDAY"); Date today = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(today); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == Calendar.FRIDAY) { calendar.add(Calendar.DATE, 3); } else if (dayOfWeek == Calendar.SATURDAY) { calendar.add(Calendar.DATE, 2); } else { calendar.add(Calendar.DATE, 1); } String strDateFormat = "E"; SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); strDateFormat = "EEEE"; sdf = new SimpleDateFormat(strDateFormat); Date nextBusinessDay = calendar.getTime(); System.out.println(sdf.format(nextBusinessDay).toUpperCase()); if(exceptionDays.contains(sdf.format(nextBusinessDay).toUpperCase())){ if(sdf.format(nextBusinessDay).toUpperCase().equals("FRIDAY")){ calendar.add(Calendar.DATE, 3); }else if(sdf.format(nextBusinessDay).toUpperCase().equals("SATURDAY")){ calendar.add(Calendar.DATE, 2); } else calendar.add(Calendar.DATE, 1); nextBusinessDay = calendar.getTime(); } DateFormat df = new SimpleDateFormat("dd-MMM-yy"); String format = df.format(nextBusinessDay.getTime()); System.out.println("Today : " + df.format(today)); try { System.out.println("Next business day: " + df.parse(format)); System.out.println("Next business day: " + df.format(nextBusinessDay)); </code>
Por favor, ignore acima lógica se parece desajeitado.