我正在使用Java Timer类来运行某些任务。对于我的程序,我将把starttime和endtime作为参数,它将询问java计时器何时开始以及何时结束任务。
在运行我的任务时,我想定期查看当前时间和结束时间之间的差异,如果当前时间等于结束时间,则通过调用timer.cancel()
方法取消任务。
我的startTime
和endTime
参数时间格式是这样的
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()
答案 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();
}
尝试,祝你好运