我试着检查当前时间是否在指定的范围内。我做了一个方法来检查这个,但是它不起作用。我不知道为什么不起作用,也不知道如何让它起作用。
private Calendar fromTime;
private Calendar toTime;
private Calendar currentTime;
public boolean checkTime(String time) {
try {
String[] times = time.split("-");
String[] from = times[0].split(":");
String[] until = times[1].split(":");
fromTime = Calendar.getInstance();
fromTime.set(Calendar.HOUR, Integer.valueOf(from[0]));
fromTime.set(Calendar.MINUTE, Integer.valueOf(from[1]));
toTime= Calendar.getInstance();
toTime.set(Calendar.HOUR, Integer.valueOf(until[0]));
toTime.set(Calendar.MINUTE, Integer.valueOf(until[1]));
currentTime = Calendar.getInstance();
currentTime.set(Calendar.HOUR, Calendar.HOUR_OF_DAY);
currentTime.set(Calendar.MINUTE, Calendar.MINUTE);
if(currentTime.after(fromTime) && currentTime.before(toTime)){
return true;
}
} catch (Exception e) {
return false;
}
return false;
}
我试着这样来检验它:
if(checkTime("06:00-19:00")){
inRange = true;
}
NPE已经没有了,但是它还没有计算时间是否在fromTime
到toTime
的范围内。非常感谢您的帮助!
6条答案
按热度按时间3mpgtkmj1#
初始化变量并将方法的返回类型更改为boolean。
s4chpxco2#
在使用toTime和fromTime对象之前,您尚未对其进行初始化。因此,最好调用toTime = Calendar.getInstance();之前。
dluptydi3#
这其中
不执行您希望它执行的操作。它所做的是将字段HOUR设置为Calendar.HOUR的值,这是一个任意常量。
您不需要这两行,因为
getInstance
返回当前时间的Calendar。j0pj023g4#
简单日期格式格式=新的简单日期格式(“年/月:日时:分:秒”);简单日期格式sdf =新的简单日期格式(“年/月/日”);
gpnt7bae5#
将currentTime置于setTime之外,并从setTime中删除***if语句***。如果需要,请将*if语句*置于setTime之外。
daolsyd06#