我不能计算时间段

时间:2015-04-16 12:06:47

标签: java

我有代码检查给定的" 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]))

但它没有正常工作,出了什么问题?

1 个答案:

答案 0 :(得分:0)

为简化起见,我建议您先从结束时间中减去开始时间,检查是否为正,然后确定剩余的毫秒数是否小于请求的时间段。

long difference = Calendar.getInstance().getTimeInMillis() - time;
long timeRange = timePeriod * 3600000;
return (0 <= difference && differance <= timeRange);

它使代码在行中略小,但更重要的是,它将数学简化为您知道代码不是问题的地方。

就您可能遇到的错误而言,我会关注您的

Long.parseLong(array[2])

因为这很可能以你不期望的方式抓住输入。对于初学者,我会进行一些日志记录或至少一次println调试语句来验证输入时间是否符合我的想法。