我有一个约会,看起来像这样:
Sun Dec 29 00:24:09 CET 2019
我有一个小的实用程序方法,可以将字符串日期从一种格式解析为另一种格式:
public String formatDate(String date, String fromFormat, String toFormat) throws Exception {
SimpleDateFormat from = new SimpleDateFormat(fromFormat);
SimpleDateFormat to = new SimpleDateFormat(toFormat);
return to.format(from.parse(date));
}
但是,使用上述日期格式,我找不到指示我方法的正确日期格式。根据SimpleDateFormat模式文档,应该(如果没有记错的话)是以下内容(用于Sun Dec 29 00:24:09 CET 2019
):
"E M d HH:mm:ss z yyyy"
但是,它引发以下异常:
java.text.ParseException: Unparseable date: "Sun Dec 29 00:24:09 CET 2019"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.aptar.simulator.Utils.formatDate(Utils.java:60)
该方法的调用方式如下:
formatDate(exDate, "E M d HH:mm:ss z yyyy", "dd-MM-yyyy HH:mm:ss");
哪里
exDate = "Sun Dec 29 00:24:09 CET 2019"
日期格式应为
EEE MMM dd HH:mm:ss z yyyy
使用这种格式,您的代码可以正常工作。
使用java.time
API
LocalDate.parse(datestr, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy")).format("TO DATE PATTERN");
使用java.time包格式化日期的更多详细信息
被接受为指出Java.time的答案。(项目中的另一个问题:D)