我数不清时间段



我有代码可以检查给定的"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调试语句来验证输入时间是否是我认为的。

最新更新