当前位置: 首页 > 知识库问答 >
问题:

要检查当前日期小于到期日[重复]

朱毅
2023-03-14
public class dateController implements Initializable {

    @FXML Label lblDate;

    Alert alert = new Alert(AlertType.INFORMATION);

    @Override
    public void initialize(URL location, ResourceBundle resources) {

        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Date date = new Date();

        lblDate.setText(dateFormat.format(date));

        String a ="19/09/2018";

        String currentdate = lblDate.getText();

        String LastRunDate = currentdate;

        if(Integer.parseInt(currentdate) < Integer.parseInt(a)) {
            alert.setHeaderText(null);             
            alert.setContentText("Successfull");
            alert.show();
        }
    }
}

共有1个答案

丌官皓君
2023-03-14

为什么会发生这种情况?

integer.parseInt可以将42这样的字符串解析为int。您正在尝试使用该方法解析类似17/09/2018的字符串。您的字符串不代表有效的int值(坦率地说,我不知道您希望从它中得到哪个整数?)因此,ParseInt方法抛出NumberFormatException

那该怎么办呢?

    LocalDate expirationDate = LocalDate.of(2018, Month.SEPTEMBER, 19);
    LocalDate today = LocalDate.now(ZoneId.systemDefault());
    if (today.isBefore(expirationDate)) {
        alert.setHeaderText(null);             
        alert.setContentText("Successful");
        alert.show();
    }

请注意,与问题中的代码相比,它要简单得多。在这种情况下,您不需要格式化或解析。我正在使用JVM的时区设置来获取今天的日期(您在问题中也这样做了)。因此,用户可能会通过更改时区将过期时间推后几个小时。如果要避免这种情况,还可以对时区进行硬编码,例如zoneid.of(“asia/ust-nera”)

如果确实需要解析19/09/2018:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("dd/MM/uuuu");
    String a ="19/09/2018";
    LocalDate expirationDate = LocalDate.parse(a, dateFormatter);

    System.out.println("Expiration date is " + expirationDate);

此代码段输出:

有效期2018-09-19

远离datedateformatsimpledateformat。它们早就过时了,特别是最后两个出了名的麻烦。取而代之的是使用Java.time,现代的Java日期和时间API。

链接:Java™教程:Trail:Date Time

 类似资料:
  • 我正在进行JavaScript验证,验证文本框的日期是否等于当前日期。 如果大于或等于今天的日期,则显示错误消息。 注意:在我的中,我已将日期转换为格式。所以我需要检查date与格式的当前日期。这是我的代码: 我需要使用日期的格式来检查我的文本框中的日期,因此我今天的值只能使用日期的格式。

  • 问题内容: 我正在尝试对应该仅包含当前日期和将来日期的日期进行验证,如果该日期是较早的日期,则它应该显示 日期早于当前日期 我也想允许当前日期。现在,将当前日期设置为gievnDate,它始终显示 日期早于当前日期 但我期望输出为 日期是指定日期的未来日期,例如今天。 下面是我一直在尝试的代码: 在这里,当我检查15/02/13时,它显示为比当前日期早。我的方法是否错误?还是有更好的方法? 问题答

  • 问题内容: 我想通过将NSDate与当前日期进行比较来检查NSDate是否在之前(过去)。我该怎么做? 谢谢 问题答案: 我找到了方法。 您也有方法。 迅速3到迅速5:

  • 我有两个约会。 我如何检查一个日期是否比另一个日期大? 我试过这个: 但它不起作用=( 这种dd/mm/yyyy格式有方法吗?

  • 我需要获取当前日期,但格式如下: 有什么方法我可以用吗?我只找到了不同的格式和暂时无法使用的东西。用于使用python。