Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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_Datetime_Date Parsing - Fatal编程技术网

Java中的日期(字符串)分析错误

Java中的日期(字符串)分析错误,java,datetime,date-parsing,Java,Datetime,Date Parsing,我使用以下代码行将字符串解析为日期: String displayBirthday; ... java.util.Date ss1=new Date(displayBirthday); SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd"); displayBirthday = formatter5.format(ss1); li.add(displayBirthday); 对于许多日期,它都可以正常工作,但是当我想解析一

我使用以下代码行将
字符串
解析为
日期

String displayBirthday;
...
java.util.Date  ss1=new Date(displayBirthday);
SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd");
displayBirthday = formatter5.format(ss1);
li.add(displayBirthday);
对于许多日期,它都可以正常工作,但是当我想解析一个日期时,比如:0001-03-10

它给了我以下错误:

java.lang.IllegalArgumentException: Parse error: 0001-03-10
我使用前缀0001表示没有年份的日期作为内部表示。如何克服这个问题

Date(java.lang.String)”已被弃用
,只需使用
SimpleDataFormat

如下

   SimpleDateFormat formatter5=new SimpleDateFormat("yyyy-MM-dd");
   String displayBirthday = formatter5.format(formatter5.parse("0001-03-10"));
   System.out.println(displayBirthday);
输出:

   0001-03-10

如果这是唯一的情况,添加If条件会有帮助吗?什么是
displaybearth
?是字符串如果是,则不要使用Date类的已弃用构造函数。它是字符串。我本可以使用if-else条件,但我得到的日期类型是不可预测的。通过各种API返回的各种格式是不同的。请在发布时花更多的精力格式化您的代码-您已经问了足够多的问题,您现在应该真正知道如何格式化代码,并且不需要很长时间就可以让每个人都能更好地阅读该问题。为什么要使用不推荐的
Date(String)
constructor?为什么不使用
simpleDataFormat
来解析它?如果您收到多种格式,您可以尝试使用多个
SimpleDataFormat
。listjava.text.ParseException解析错误:不可解析日期:“1990年8月24日”(偏移量为0),您无法通过
1990年8月24日“
使用此
SimpleDataFormat
,您需要新的格式。如何检测日期的模式,以便将其传递给不同的解析器?