解析数据时抛出异常
Exception thrown when parsing data
抱歉,如果这是一个菜鸟问题,但我有以下问题:每次我尝试将字符串解析为具有特定格式 (ddMMyyy) 的 LocalDate
类型时,我都会收到以下消息:
Exception in thread "main" java.time.format.DateTimeParseException: Text '06071994' could not be parsed at index 2
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDate.parse(LocalDate.java:428)
at jujj.main(jujj.java:7)
Process finished with exit code 1
起初我想也许我在代码的不同部分做错了,我试图隔离我正在做解析的部分来测试它,但没有成功。这是测试代码:
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern ( "dd MM yyyy" );
LocalDate BirthDay = LocalDate.parse ( in, format );
System.out.println ( in );
稍后编辑:我尝试了不同的格式:“dd/MM/yyyy”、“dd-MM-yyyy”、“ddMMyyyy”,它们仍然无效。
很明显,您的模式与您的字符串不匹配。
您的字符串不包含空格,而您的模式包含空格。
您的字符串包含两位数的月份,而您的模式需要月份名称的三个字母缩写。
试试下面的代码:
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern ( "ddMMyyyy" );
LocalDate BirthDay = LocalDate.parse ( in, format );
System.out.println ( BirthDay );
所有有效模式在 class DateTimeFormatter
的 javadoc 中都有详细说明
import java.text.ParseException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class FormatDate {
public static void main(String... args) throws ParseException {
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern("ddMMyyyy");
LocalDate BirthDay = LocalDate.parse(in, format);
System.out.println(BirthDay);
}
}
编辑 1:代码的问题是输入的格式为 ddMMyyyy(06071994),格式为 dd MM yyyy(应该是 ddMMyyyy)。所以现在解析器发现要解析的输入和格式不一样,因此会抛出错误。
抱歉,如果这是一个菜鸟问题,但我有以下问题:每次我尝试将字符串解析为具有特定格式 (ddMMyyy) 的 LocalDate
类型时,我都会收到以下消息:
Exception in thread "main" java.time.format.DateTimeParseException: Text '06071994' could not be parsed at index 2
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.LocalDate.parse(LocalDate.java:428)
at jujj.main(jujj.java:7)
Process finished with exit code 1
起初我想也许我在代码的不同部分做错了,我试图隔离我正在做解析的部分来测试它,但没有成功。这是测试代码:
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern ( "dd MM yyyy" );
LocalDate BirthDay = LocalDate.parse ( in, format );
System.out.println ( in );
稍后编辑:我尝试了不同的格式:“dd/MM/yyyy”、“dd-MM-yyyy”、“ddMMyyyy”,它们仍然无效。
很明显,您的模式与您的字符串不匹配。
您的字符串不包含空格,而您的模式包含空格。
您的字符串包含两位数的月份,而您的模式需要月份名称的三个字母缩写。
试试下面的代码:
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern ( "ddMMyyyy" );
LocalDate BirthDay = LocalDate.parse ( in, format );
System.out.println ( BirthDay );
所有有效模式在 class DateTimeFormatter
import java.text.ParseException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class FormatDate {
public static void main(String... args) throws ParseException {
String in = "06071994";
DateTimeFormatter format = DateTimeFormatter.ofPattern("ddMMyyyy");
LocalDate BirthDay = LocalDate.parse(in, format);
System.out.println(BirthDay);
}
}
编辑 1:代码的问题是输入的格式为 ddMMyyyy(06071994),格式为 dd MM yyyy(应该是 ddMMyyyy)。所以现在解析器发现要解析的输入和格式不一样,因此会抛出错误。