2011-01-11 101 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; 
} 

}`