【问题标题】:warning to avoid time in future in Java [duplicate]警告以避免将来在Java中使用时间[重复]
【发布时间】:2011-01-11 18:10:56
【问题描述】:

可能重复:
warning message/pop out for date/time

我有一个表单,用户需要输入日期和时间(2 个不同的字段),并且时间不能是将来。它可以是当前时间,也可以是过去 12 小时之前的时间。所以我想在时间超过 12 小时时添加一条警告消息。在Java中将如何计算。请帮帮我!

【问题讨论】:

  • warning message/pop out for date/time 的副本。如果答案不让您满意,请使用edit 链接来改进原始问题(添加更多详细信息,添加/删除(ir)相关标签等),而不是按 发布副本。我怀疑使用[javascript] 标签是一个错误的选择。
  • 这是 Java 问题/问题还是 JavaScript?你不应该在这里有两个标签。
  • @BalusC 感谢您的建议,这是一个不同的问题,我需要帮助以防止将来输入时间,并且需要 Java 而不是 Javascript/JSF
  • 同样的答案稍加修改就行不通?
  • 我会记住的,谢谢!!

标签: java


【解决方案1】:

如果你想要 Java,这应该可以。 JODA 不错,但它是另一个 lib 依赖。

` 导入 java.util.Calendar; 导入 junit.framework.TestCase; 导入静态 java.lang.System.out;

公共类 DateCheck 扩展 TestCase { 公共无效 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;
}

}`

【讨论】:

  • 澄清12 * 60 * 60 * 1000这意味着12小时乘以每小时60分钟乘以每分钟60秒乘以每秒1000毫秒。
【解决方案2】:

您基本上是想计算两个日期之间的小时差。您可以使用 JodaTime hoursBetween 方法轻松做到这一点。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多