我有代码检查给定的" 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]))
但它没有正常工作,出了什么问题?
答案 0 :(得分:0)
为简化起见,我建议您先从结束时间中减去开始时间,检查是否为正,然后确定剩余的毫秒数是否小于请求的时间段。
long difference = Calendar.getInstance().getTimeInMillis() - time;
long timeRange = timePeriod * 3600000;
return (0 <= difference && differance <= timeRange);
它使代码在行中略小,但更重要的是,它将数学简化为您知道代码不是问题的地方。
就您可能遇到的错误而言,我会关注您的
Long.parseLong(array[2])
因为这很可能以你不期望的方式抓住输入。对于初学者,我会进行一些日志记录或至少一次println
调试语句来验证输入时间是否符合我的想法。