【发布时间】:2018-06-22 06:35:42
【问题描述】:
我不知道这里发生了什么:如果当前时间在给定范围之间,我需要返回 true,例如:现在是 15:45:00 并且在 12:00:00(分钟)和 18 之间: 00:00(max),但是这个方法做错了:
private boolean verifyIfInside(String max, String min){
try {
DateFormat dateFormat = new SimpleDateFormat ("HH:mm:ss");
Date date = new Date();
String hour1 = min;
String hour2 = max;
String newHour = dateFormat.format(date);
Date minHour, maxHour, nowHour;
minHour = dateFormat.parse(hora1);
maxHour = dateFormat.parse(hora2);
nowHour = dateFormat.parse(newHour );
if ((minHour.compareTo(nowHour) <= 0) && (maxHour.compareTo(nowHour) >= 0)){
return true;
} else {
return false;
}
} catch (ParseException parseException){
parseException.printStackTrace();
return false;
}
}
【问题讨论】:
-
使用
Date.before()和Date.after()而不是将时间转换为字符串并使用字符串比较。此外,您按此顺序传递max, min,但hour1, hour2对应于min, max。您是否以正确的顺序传递参数? -
hour1可能是 - 对我们来说 - 翻译成hora1更进一步。事实上,参数被定义为(max, min)有点违反直觉。 -
您使用早已过时的课程
DateFormat、SimpleDateFormat和Date有什么特别的原因吗?我建议您使用java.time, the modern Java date and time API,而不是那种麻烦。使用起来感觉好多了。
标签: java date time datetime-comparison