有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有单个模式字母的java DateTimeFormatter格式无法解析短月份名称

当我运行下面列出的代码时,我看到以下错误:

Exception in thread "main" java.time.format.DateTimeParseException: Text 'Thu Sep 21 23:47:03 EDT 2017' could not be parsed at index 4 at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source) at java.time.format.DateTimeFormatter.parse(Unknown Source) at java.time.LocalDate.parse(Unknown Source) 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);           
    }    
}

共 (1) 个答案

  1. # 1 楼答案

    您正在使用M作为月份格式说明符,但是M是一个数字/文本字段,所以它需要一个数值

    我还怀疑你指的是HH:mm:ss而不是H:m:s的时间段,以及yyyy的年份。(后者不太可能是个问题,除非你的约会日期早于公元1000年。)

    这是有效的:

    DateTimeFormatter formatter =
        DateTimeFormatter.ofPattern("E MMM d HH:mm:ss z yyyy", Locale.ENGLISH);