将字符串转换为日期对象并返回它

时间:2021-07-09 01:58:13

标签: java localdate

我很难让我的 getDate 方法起作用。我提示用户输入日期样式 MM/dd/yyyy 作为字符串。我需要将字符串转换为日期对象并返回它。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public static String getDate(String prompt) {
    String dateAsString = getString(prompt);
    do {
        System.out.println(prompt);
        dateAsString = keyboard.nextLine();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy");
        LocalDate dateAsString1=formatter.parse(dateAsString1); 
    }
    while (dateAsString == null || dateAsString.length() < 1);

    return dateAsString; 
}

2 个答案:

答案 0 :(得分:2)

您当前的方法做了太多事情。只需传入要转换为 StringLocalDate 并使用 LocalDate.parse(CharSequence, DateTimeFormatter) 解析该 String 并返回结果。类似的东西,

public static LocalDate parseDate(String str) {
    return LocalDate.parse(str, DateTimeFormatter.ofPattern("M/d/yyyy"));
}

为了测试它,我只是做了

public static void main(String[] args) {
    System.out.println(parseDate("10/31/2021"));
}

最后,我建议对您的方法进行明确且单独的关注。这样调试起来就容易多了。

答案 1 :(得分:0)

DateTimeFormatter 没有任何称为“.parse()”的方法。只有 LocalDate 有 ".parse()" 方法,我们需要在 String 函数中传递 DateTimeFormatterparse()。当给定的字符串与模式不匹配时,它会抛出一个错误(DateTimeParseException )!所以我添加了 Try and Catch 方法

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy");

try{  LocalDate dateAsString1 = LocalDate.parse(dateAsString,formatter);  }
catch(DateTimeParseException e){ 
    //Wrong String Formation
}
相关问题