2011-01-11 21 views
-1

可能重複:
warning message/pop out for date/time警告,以避免時間在未來的Java

我有其中一個用戶需要輸入日期和時間(2個不同的字段)形式和時間今後不可能。它可以是目前的時間,也可以是過去的12小時以前的時間。所以我想在時間超過12小時的時候添加一條警告消息。在Java中如何計算這個值。請幫助我!

+1

複製的[警告消息/彈出日期/時間](http://stackoverflow.com/questions/4650753/warning-message-pop-out-for-date-時間)。如果答案不滿足你,而是使用`編輯'鏈接來改善原始問題(添加更多細節,添加/刪除(紅外)相關標籤等),而不是按「提問」來發布重複。我懷疑使用`[javascript]`標籤是錯誤的選擇。 – BalusC 2011-01-11 18:12:26

+0

這是一個Java的問題或JavaScript的?你不應該在這裏有兩個標籤。您的建議 – 2011-01-11 18:14:54

回答

0

你基本上是想計算兩個日期之間的時間差。您可以使用JodaTime hoursBetween方法輕鬆做到這一點。

1

如果你想的Java這應該工作。 JODA很好,但它是另一個lib依賴項。

`進口java.util.Calendar中; import junit.framework.TestCase; import static java.lang.System.out;

公共類DateCheck延伸測試用例{ 公共無效testCheckBefore(){// 獲取當前時間 日曆C = Calendar.getInstance();

//Let's make it 13:00 just to make the example simple. 
    c.set(Calendar.HOUR_OF_DAY, 13); 
    out.println(c.getTime()); 

    Calendar old = Calendar.getInstance(); 
    old.set(Calendar.HOUR_OF_DAY, 0); 
    if(old.after(c)) { 
     throw new IllegalArgumentException("You entered a date in the future"); 
    } 

    assertTrue(olderThanTwelveHours(c, old)); 

    // Let's change to 5 in the morning. 
    old.set(Calendar.HOUR_OF_DAY, 5); 
    assertFalse(olderThanTwelveHours(c, old)); 
} 

private boolean olderThanTwelveHours(Calendar c, Calendar old) { 
    long startTime= c.getTimeInMillis(); 
    long oldTime = old.getTimeInMillis(); 

    long timeDiff = startTime - oldTime; 
    if(timeDiff > (12 * 60 * 60 * 1000)) { 
     out.println("You're too late"); 
     return true; 
    } 
    return false; 
} 

}`