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

mzmfm0qo  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(313)

我很难找到我的工作 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; 
}
pepwfjgg

pepwfjgg1#

您当前的方法做的事情太多了。只需将 String 您想转换为 LocalDate 和使用 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"));
}

最后,我建议为您的方法提供清晰和独立的关注点。这样调试就容易多了。

2j4z5cfb

2j4z5cfb2#

datetimeformatter没有任何名为“.parse()”的方法。只有localdate具有“.parse()”方法,我们需要传递 StringDateTimeFormatter 因为 parse() 功能。当给定的字符串与模式不匹配时,它将抛出一个错误( DateTimeParseException ) ! 所以我添加了try-and-catch方法

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

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

相关问题