更改日期格式Java获取无法解析的日期错误



我有一个以下格式的日期:

lastUpdatedDate = "12/14/2021 09:15:17"; 

我使用以下代码/格式将日期转换为yyyy-MM-dd hh:MM:ss格式:

SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date lastUpdatedDateFormatted = dt.parse(lastUpdatedDate);

但它给了我以下错误:

java.text.ParseException: Unparseable date: "12/14/2021 09:15:17"

输出应为:2021-12-14 09:15:17

我怎样才能做到这一点?

您的格式化模式与输入字符串不匹配。

您使用的是糟糕的日期-时间类,这些类在几年前被JSR310中定义的现代java.time类所取代。

java.time

现代解决方案使用java.time类。

您的输入缺少时区或UTC偏移量的指示符,因此将其解析为LocalDateTime对象。

LocalDateTime ldt = 
LocalDateTime
.parse(
"12/14/2021 09:15:17" ,
DateTimeFormatter.ofPattern( "MM/dd/uuuu hh:mm:ss" ) ;
) ;

除了中间的SPACE而不是T之外,您所需的输出几乎符合java.time中默认使用的ISO8601标准格式。

String output = ldt.toString().replace( "T" , " " ) ;

将格式更改为

SimpleDateFormat dt = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date lastUpdatedDateFormatted = dt.parse(lastUpdatedDate);
System.out.println(lastUpdatedDateFormatted);

然后它应该能够解析日期。

如果要以yyyy-MM-dd HH:MM:ss格式显示或输出日期,应先解析日期,然后将日期格式化为所需格式

try {
String lastUpdatedDate = "12/14/2021 09:15:17";
Date lastDate = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(lastUpdatedDate);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(lastDate));
} catch (ParseException e) {
e.printStackTrace();
}