簡體   English   中英

Java中當前時間和未來時間之間的時差

[英]Difference between current time and future time in java

我正在使用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()

可能不是時間問題。

如果比較兩個字符串,則最好使用equals()

嘗試這個 :

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

您應該使用“ currentTime.equals(endTime)”函數比較字符串,而不是==運算符。“。equals”函數檢查字符串的實際內容,==運算符檢查兩個對象的引用是否均相等,在您的情況下無效。

您想檢查當前時間是否等於結束時間-可以理解,但是您希望檢查到什么水平-直到分鍾,秒或毫秒? 因為如果以毫秒或更低為單位進行比較,則即使時間與秒相同也可能永遠不會取消。

如果要檢查毫秒,只需將結束日期轉換為millis 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();
}

嘗試,祝你好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM