java中当前时间和未来时间的区别

时间:2015-03-31 01:31:30

标签: java time timer timertask difference

我正在使用Java Timer类来运行某些任务。对于我的程序,我将把starttime和endtime作为参数,它将询问java计时器何时开始以及何时结束任务。

在运行我的任务时,我想定期查看当前时间和结束时间之间的差异,如果当前时间等于结束时间,则通过调用timer.cancel()方法取消任务。

我的startTimeendTime参数时间格式是这样的

String startTime = "12:00";
String endTime = "12:01";
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date date1 = format.parse(startTime);
Date date2 = format.parse(endTime);
long difference = date2.getTime() - date1.getTime();

我想检查当前时间是否等于终结时间。

但我想检查当前时间等于结束时间并调用timer.cancel()

的条件

4 个答案:

答案 0 :(得分:0)

可能不是时间问题..

如果比较两个字符串,最好使用equals()

试试这个:

if(currentTime.equals(endTime)) {
    timer.cancel();
}

答案 1 :(得分:0)

你应该使用" currentTime.equals(endTime)"比较字符串的函数,而不是==运算符。" .equals"函数检查字符串的实际内容,==运算符检查两个对象的引用是否相等,在您的情况下是无效的。

答案 2 :(得分:0)

您想要检查当前时间是否等于结束时间 - 可以理解,但是您希望检查它是否相等 - 达到分钟,秒或毫秒?因为如果你用毫秒或更低的比较,即使时间可能与第二个相同,你也可能永远不会取消。

如果要检查毫秒 - 只需将结束日期转换为millis date.getTime()并减去System.currentTimeMillis() - 如果结果为0,则它​​与毫秒相同。如果差异小于1000(1 * 1000),则在第二个范围内。如果它小于60000(1 * 60 * 1000)则在一分钟内。

答案 3 :(得分:0)

可能是,你只是不知道如何获得 endTime

String startTime = "12:00";

SimpleDateFormat sDateFormat = new SimpleDateFormat(
            "hh:mm");
String endTime = sDateFormat.format(new java.util.Date());

if (startTime.equals(endTime)) {
    timer.cancel();
}

尝试,祝你好运