私は、次のことを行う必要がある 1 つの Java アプリケーションを作成しています。
ビジネス ロジックの処理を行うために、週に 2 日 (外部で構成可能)、たとえば TUESDAY と FRIDAY を避ける必要があります。次の利用可能な日を知りたいです。例: 今日が火曜日の場合、次に利用可能なものとして水曜日を取得する必要があります。または、今日が木曜日の場合、次に利用可能なものは月曜日である必要があります。
誰かがこれを解決するのを手伝ってくれますか? これは単純に聞こえますが、実際にはトリッキーです。
これが私がこれまでにしたことです
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));
不器用に見える場合は、上記のロジックを無視してください。