运行下面列出的代码时,我看到以下错误:
线程中的异常" main" java.time.format.DateTimeParseException: 文字'星期四9月21日23:47:03 EDT 2017'无法在索引4处解析 java.time.format.DateTimeFormatter.parseResolved0(未知来源)at java.time.format.DateTimeFormatter.parse(未知来源)at java.time.LocalDate.parse(未知来源)at com.example.demo.DateTest.main(DateTest.java:16)
代码
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class DateTest {
public static void main(String[] args) {
String date = "Thu Sep 21 23:47:03 EDT 2017";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E M d H:m:s z y", Locale.ENGLISH);
LocalDate startDate = LocalDate.parse(date, formatter);
System.out.println(date);
}
}
答案 0 :(得分:3)
您使用M
作为月份格式说明符,但M
是数字/文本字段,因此它需要一个数值。
我还怀疑你的时间部分是HH:mm:ss
而不是H:m:s
,而今年是yyyy
。 (除非你真的在1000AD之前有日期,否则后者不太可能成为问题。)
这有效:
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("E MMM d HH:mm:ss z yyyy", Locale.ENGLISH);