我有一个以下格式的日期:
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();
}