java 当前时间和未来时间之间的差异

Difference between current time and future time in java

我正在使用 Java 计时器 class 来完成 运行 某些任务。对于我的程序,我将提供开始时间和结束时间作为参数,它们将询问 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()

可能不是时间问题..

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

试试这个:

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

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

您想检查当前时间是否等于结束时间 - 这可以理解,但您希望检查它是否相等到什么级别 - 直到分钟、秒或毫秒?因为如果您以毫秒或更短的时间进行比较,即使时间可能与秒相同,您也可能永远不会取消。

如果您想检查到毫秒 - 只需将结束日期转换为毫秒 date.getTime() 并减去 System.currentTimeMillis() - 如果结果为 0,则与毫秒相同。如果差异小于 1000 (1 * 1000),则在秒内。如果小于60000(1 * 60 * 1000)就是分钟内。

可能是,您只是不知道如何获取 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();
}

试试吧,祝你好运