【发布时间】:2019-10-09 22:52:15
【问题描述】:
我在这个模式中有日期 EEEEE MMMMM yyyy HH:mm:ss.SSSZ,我想在 java 中将它转换为 yyyy-MM-dd 格式,我尝试了以下方法但我得到了这个例外java.text.ParseException: Unparseable date:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = "Sun Oct 01 00:00:00 EDT 2017";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
有人可以帮我解决这个问题吗?
谢谢。
【问题讨论】:
-
EEEEE你的意思是DDDDD,对吧? -
在两个单独的步骤中解析和格式化,您需要一个代表每个模式的格式化程序才能使其工作
-
仅供参考,
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat等麻烦的日期时间类现在已被 java.time 类所取代。大多数 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 Java 7。进一步适用于ThreeTenABP 中的早期 Android (How to use ThreeTenABP…。 -
首先我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的ZonedDateTime(或OffsetDateTime)和DateTimeFormatter。 -
Sun Oct 01 00:00:00 EDT 2017在模式EEEEE MMMMM yyyy HH:mm:ss.SSSZ中不是。它也不在模式dd-MMM-yyyy中,因此无法使用具有后一种模式的格式化程序进行解析。