我有代码可以检查给定的"A"时间(以毫秒为单位)是否在给定的"b"时间段内。
private static boolean isInTimeInterval(long time, int timePeriod) {
long curTime = Calendar.getInstance().getTimeInMillis();
// time period is in hours, 1 hour is 3600000 ms;
long startTime = curTime - timePeriod * 3600000;
if (time >= startTime && time < curTime){
return true;
}
return false;
}
我从文件中获取时间并将其解析为如下所示的long
:
(Long.parseLong(array[2]))
但是它不能正常工作,有什么问题?
为了简化事情,我建议您首先从结束时间中减去开始时间,检查它是否为正数,然后确定剩余毫秒是否小于请求的时间段。
long difference = Calendar.getInstance().getTimeInMillis() - time;
long timeRange = timePeriod * 3600000;
return (0 <= difference && differance <= timeRange);
它使代码的行数略小,但更重要的是,它简化了数学,使你知道代码不是问题。
至于您可能遇到的错误,我会看看你的
Long.parseLong(array[2])
因为这可能会以您意想不到的方式获取输入。 对于初学者,我会输入一些日志记录或至少一次性println
调试语句来验证输入时间是否是我认为的。