下面是一个示例代码,用于检查当前时间是否在两个给定时间之间,并且所在星期几有效的情况。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeRangeChecker {
public static void main(String[] args) {
String startTime = "08:00";
String endTime = "18:00";
String validDays = "Monday,Wednesday,Friday";
boolean isTimeValid = checkTimeRange(startTime, endTime, validDays);
System.out.println("Is current time valid: " + isTimeValid);
}
private static boolean checkTimeRange(String startTime, String endTime, String validDays) {
Calendar now = Calendar.getInstance();
int currentDayOfWeek = now.get(Calendar.DAY_OF_WEEK);
// Check if current day is valid
if (!isValidDay(currentDayOfWeek, validDays)) {
return false;
}
// Get current time
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
String currentTime = dateFormat.format(now.getTime());
try {
// Parse start and end time
Date startTimeObj = dateFormat.parse(startTime);
Date endTimeObj = dateFormat.parse(endTime);
Date currentTimeObj = dateFormat.parse(currentTime);
// Check if current time is within the range
if (currentTimeObj.after(startTimeObj) && currentTimeObj.before(endTimeObj)) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
private static boolean isValidDay(int dayOfWeek, String validDays) {
String[] validDaysArray = validDays.split(",");
for (String validDay : validDaysArray) {
int validDayOfWeek = getDayOfWeek(validDay);
if (dayOfWeek == validDayOfWeek) {
return true;
}
}
return false;
}
private static int getDayOfWeek(String day) {
switch (day.trim().toLowerCase()) {
case "sunday":
return Calendar.SUNDAY;
case "monday":
return Calendar.MONDAY;
case "tuesday":
return Calendar.TUESDAY;
case "wednesday":
return Calendar.WEDNESDAY;
case "thursday":
return Calendar.THURSDAY;
case "friday":
return Calendar.FRIDAY;
case "saturday":
return Calendar.SATURDAY;
default:
return -1;
}
}
}
在这个示例中,我们使用了Calendar
类来获取当前日期和时间。我们还使用了SimpleDateFormat
类来解析和格式化时间字符串。
checkTimeRange
方法接受三个参数:起始时间、结束时间和有效星期几。它首先获取当前日期的星期几,并检查它是否在有效星期几的列表中。然后,它将当前时间与起始时间和结束时间进行比较,如果当前时间在范围内,则返回true
,否则返回false
。
isValidDay
方法用于检查当前日期的星期几是否在有效星期几的列表中。
getDayOfWeek
方法将星期几的字符串转换为Calendar
类中对应的常量值。
请注意,此示例假设输入的时间格式均为24小时制(如08:00和18:00)。如果您需要使用其他时间格式,请相应地修改SimpleDateFormat
的模式。