首页 > 解决方案 > 从 cmd 验证日期的方法

问题描述

我需要以某种方式验证两个日期,但我不知道哪种方式最好。在 mainclass 中,我创建了由构造函数传递给NBPParserEngine.

package pl.parser.nbp;

import pl.parser.nbp.calculations.RateCalculations;
import pl.parser.nbp.validation.ConditionChecker;
import pl.parser.nbp.validation.ConditionCheckerService;
import pl.parser.nbp.historysystem.HistorySystem;
import pl.parser.nbp.historysystem.HistorySystemService;
import pl.parser.nbp.view.NbpParserView;

import java.time.LocalDate;

public class MainClass {

    public static void main(String[] args) {

        NbpParserView nbpParserView = new NbpParserView();
        DataFetcher dataFetcher = new DataFetcher();
        HistorySystem historySystem = new HistorySystemService();
        RateCalculations rateCalculations = new RateCalculations();
        ConditionChecker conditionChecker = new ConditionCheckerService();
        NBPParserEngine nbpParserEngine = new NBPParserEngine(conditionChecker, dataFetcher, rateCalculations,
                historySystem, nbpParserView);


        String currency = args[0];
        LocalDate startDate = LocalDate.parse(args[1]);
        LocalDate endDate = LocalDate.parse(args[2]);

        nbpParserEngine.executeNbpParserEngine(startDate, endDate, currency);
    }
}

我需要验证这两个日期是否合适,因为如果不是,则DateTimeParseException抛出。while我应该使用循环和扫描仪在 main 中验证它还是以哪种方式验证它?

标签: javavalidationlocaldate

解决方案


使用 try-catch 语句,例如:

    LocalDate startDate = null;
    try {
        startDate = LocalDate.parse(args[1]);
    } catch (DateTimeParseException dtpe) {
        System.err.println("Start date \"" + args[1] + "\" is not a valid date.");
        System.exit(-1);
    }

对结束日期执行类似操作。

搜索java exception handling或类似内容以了解更多信息。

是的,如果您的程序是交互式的,从命令行读取日期的替代方法是使用扫描仪从标准输入读取并循环直到输入有效日期。同样,我认为搜索将引导您找到将其组合在一起所需的构建块。


推荐阅读