正如 Pranav balu 已经说过的,为您的数据使用 Java 对象/数据结构。使用 JSON 库(如 Jackson 或 Gson)将 JSON 输入转换为 Java 类型。对于每日可用性范围,您将需要一个 Java 类型。例如:
public class AvailabilityRange {
LocalTime opens;
LocalTime closes;
public AvailabilityRange(String from, String to) {
opens = LocalTime.parse(from);
closes = LocalTime.parse(to);
}
public boolean inRange(String timeString) {
LocalTime time = LocalTime.parse(timeString);
return (! time.isBefore(opens)) && time.isBefore(closes);
}
}
我提供了一个便利构造函数和一个接受String
参数的便利方法。您可能需要一个构造函数和一个接受的方法LocalTime
,或两者兼而有之。
示例使用:
Map<DayOfWeek, AvailabilityRange> availability
= new EnumMap<DayOfWeek, AvailabilityRange>(
Map.of(DayOfWeek.SUNDAY, new AvailabilityRange("00:00", "10:00"),
DayOfWeek.MONDAY, new AvailabilityRange("00:00", "10:00")));
String dayString = "MONDAY";
String timeString = "02:39:00";
boolean isOpen;
AvailabilityRange availabilityForDay
= availability.get(DayOfWeek.valueOf(dayString));
if (availabilityForDay == null) {
isOpen = false;
} else {
isOpen = availabilityForDay.inRange(timeString);
}
System.out.println("Is open? " + isOpen);
输出:
开了?真的
我正在利用您的时间字符串采用 ISO 8601 格式这一事实,并将LocalTime
此格式解析为默认格式,即没有任何显式格式化程序。秒在格式中是可选的,因此两者都00:00
被02:39:00
解析。