【问题标题】:How to check user entered date is greater than 32 days from current date in java如何检查用户输入的日期是否大于java中当前日期的32天
【发布时间】:2015-05-24 19:06:00
【问题描述】:

我想根据条件验证用户输入的日期。条件是用户输入的新日期应大于 32 天。如何做同样的事情?我尝试了以下方法,但它不起作用。

final Date getuserDate = validate.date();
logger.debug("UserDate is" + getuserDate);
DateTime currentExpdelDate = new DateTime(getuserDate);
DateTime currentDate = new DateTime();

DateTime dtPlus = currentDate.plusDays(32);
long millisec = dtPlus.getMillis() - currentExpdelDate.getMillis();
if (millisec > 0) {
    long diffDays = millisec / (24 * 60 * 60 * 1000);
    if (diffDays < 32) {

        System.out.println("Date should be greater than 32 days")
    }
}

【问题讨论】:

  • 是的。 org.joda.time.DateTime;
  • 好的,抱歉。如果我们可以使用 Java 标准库进行管理,请提出相同的方法
  • 哦,Java Date 类真的很垃圾,Calendar 及其相关的类也好不了多少。如果您已经在使用 Joda 时间,那么您可能领先于游戏。我没有享受过这种乐趣,但人们会说出来。
  • “但它不起作用” ...它怎么不起作用?你有例外吗?结果有错吗?您是否收到编译器错误?

标签: java validation date conditional-statements jodatime


【解决方案1】:

通用类型DateTime 不适用于仅日期任务。因此,您应该在 Joda-Time-library 中选择 LocalDate 类型。

那么你可以使用这个constructor。请注意,您需要指定时区,因为当前日期不是世界各地同一时间的同一日期。

java.util.Date input = ...;
DateTimeZone zone = DateTimeZone.forID(...);

LocalDate userDate = new LocalDate(input, zone);
boolean exclude = new LocalDate(zone).plusDays(32).isAfter(userDate);

if (exclude) {
  System.out.println("Date should be greater than 32 days in the future.");
}

【讨论】:

  • 如何为印度标准时间指定时区
  • 它会检查用户输入的日期是否大于当前日期的 32 天??
  • @KathirvelAppusamy 关于印度时间:只需使用DateTimeZone.forID("Asia/Kolkata")。如果这是您的系统时区,您也可以完全忽略它,尽管我认为这种方法具有潜在危险,因为您的程序可能运行在例如位于美国的服务器上..
【解决方案2】:

如果您已经在 Java 8 上,您可以通过 plusDays()isBefore() 方法使用其新的 LocalDate 类。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多