gpt4 book ai didi

Java LocalDate 输入验证

转载 作者:行者123 更新时间:2023-12-01 16:46:23 28 4
gpt4 key购买 nike

被这个问题困扰了一段时间,希望得到一些意见。我想验证用户输入的日期,以便我可以使用 LocalDate 对象执行计算。但是,当输入有效日期时,返回的日期是前一个无效日期,这会引发异常并崩溃。我错过了什么或做错了什么。

public static void main(String[] args) {            
Scanner sc = new Scanner(System.in);

// Accept two dates from the user and return the number of days between the two dates
numDaysBetween(sc); // calls to the inputDate are inside

sc.close();

} // end main

public static int[] inputDate(Scanner sc) {
System.out.print("Enter Date - In format dd/mm/yyyy: ");

while(!sc.hasNext("([0-9]{2})/([0-9]{2})/([0-9]){4}")) {
System.out.print("That's not a valid date. Enter the date again: ");
sc.nextLine();
} // end while
String dateAsString = sc.nextLine();
String[] dateArr = dateAsString.split("/");

int[] dateArrInt = Arrays.asList(dateArr)
.stream()
.mapToInt(Integer::parseInt)
.toArray();
System.out.println(Arrays.toString(dateArrInt));
try {
//LocalDate date = LocalDate.of(dateArrInt[2], dateArrInt[1], dateArrInt[0]);
LocalDate d = LocalDate.of(Integer.parseInt(dateArr[2]), Integer.parseInt(dateArr[1]), Integer.parseInt(dateArr[0]));
//System.out.println(d.getDayOfMonth() + "/" + d.getMonthValue() + "/" + d.getYear() );

} catch(DateTimeException e) {
System.out.print(e.getMessage() + "\n");
inputDate(sc);

} // end catch

return dateArrInt;
} // end inputDate()

最佳答案

从字符串获取本地日期的正确方法是使用 DateTimeFormatter

    String str = "24/09/2017";
DateTimeFormatter dt = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse(str, dt);

关于Java LocalDate 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com