Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分析数据时引发异常_Java_Parsing_Localdate - Fatal编程技术网

Java 分析数据时引发异常

Java 分析数据时引发异常,java,parsing,localdate,Java,Parsing,Localdate,如果这是一个新手问题,很抱歉,但我有以下问题:每次我尝试将字符串解析为LocalDate类型,使用特定格式(ddMMyyy),我都会收到以下消息: Exception in thread "main" java.time.format.DateTimeParseException: Text '06071994' could not be parsed at index 2 at java.base/java.time.format.DateTimeFormatter

如果这是一个新手问题,很抱歉,但我有以下问题:每次我尝试将字符串解析为
LocalDate
类型,使用特定格式(ddMMyyy),我都会收到以下消息:

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.of模式(“ddMMyyyy”);
LocalDate生日=LocalDate.parse(格式为);
System.out.println(生日);
类的javadoc中详细说明了所有有效模式


编辑1:代码的问题是输入格式为ddMMyyyy(06071994),格式为dd MM yyyy(应为ddMMyyyy)。因此,现在解析器发现要解析的输入和格式不相同,因此会抛出错误。

也许您必须使用“ddMMyyyy”的模式“ddMMyyyy”作为“dd MMM yyy”的替代"? 我认为格式化程序希望您的模式中的空格以您使用它的方式出现在目标字符串中。MMM代表JAN、FEB等,使用MMHey、Thank或quick response!:我试着这样使用它,它给了我同样的信息。我还尝试使用“dd/MM/yyyÿ”和“dd-MM-yyy”模式。不幸的是,它仍然给了我同样的信息。平心而论,我的笔记本电脑有点旧,运行在Windows7上,我刚刚出现了一些奇怪的错误,除了重新启动它,我什么都不做。但这次似乎没有任何解决方法。我也尝试使用MM,但仍然收到相同的消息。您可能无意中在字符串
“06071994”
中输入了一个非打印字符。尝试完全删除该行并重新输入。感谢您的回复,它成功了!谢谢你的链接如果你解释一下你改变了什么以及为什么,这将是一个更好的答案。代码转储本身对未来的读者来说并不是很有用,也无助于帮助人们学习。谢谢您的反馈。我已经解释了这个问题,如果不能理解请告诉我
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);
  }
}