当前位置: 首页 > 知识库问答 >
问题:

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

尉迟宇定
2023-03-14

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

线程“main”java中出现异常。时间总体安排DateTimeParseException:无法在java的索引4处分析文本“2017年9月21日星期四23:47:03 EDT”。时间总体安排DateTimeFormatter。java上的parseResolved0(未知源)。时间总体安排DateTimeFormatter。在java上解析(未知源)。时间LocalDate。在com上解析(未知源)。实例演示。日期测试。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个答案

赵浩邈
2023-03-14

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

我还怀疑你指的是时间段的H:mm:ss,而不是年份的H:m:s。(除非你的日期在公元1000年之前,否则后者不太可能成为问题。)

这项工作:

DateTimeFormatter formatter =
    DateTimeFormatter.ofPattern("E MMM d HH:mm:ss z yyyy", Locale.ENGLISH);
 类似资料:
  • 只有对的最后一次尝试才会“通过”。根据文档,应该能够解析出文本格式。还要注意大写的'm'和小写的'm'之间的细微差别。 这真的很烦人,因为我无法在默认情况下解析出Oracle DB默认格式化的字符串 同样,对于以下程序: 我的问题是: 对我来说,期望每一个都能工作是合理的吗? 我们至少应该将其中一些作为bug提交吗? 我是否误解了模式说明符的用法。 引用文档中的一个部分,我称之为“它很重要”: 针

  • 问题内容: 我注意到无法按预期解析。见下文: 只有最后一次尝试才会“通过”。按照文档,应该能够解析出文本格式。还要注意大写字母“ M”与小写字母“ m”的细微差别。 这真的很烦人,因为我默认情况下无法解析Oracle DB默认设置格式的字符串 同样,对于以下程序: 我得到以下输出: 显然,格式说明符不处理任何文本内容,对我而言似乎是数字… 但是,如果将Locale更改为,则会得到以下输出: 真的很

  • 我有以下行在我的代码,我试图格式化一个日期字符串 在第2行,我得到了这个错误: 如何为将给出例如:

  • 我使用Java8的ZonedDateTime和DateTimeFormatter。当我试图解析自己的模式时,它无法识别并抛出异常。

  • 问题内容: 我有一个表示 法语 语言环境中日期的字符串:08-oct-08: 我需要 解析 该String,所以我想到了这个SimpleDateFormat: 但是我对月份部分有问题,这似乎应该以结束点表示: 给我 : 现在让我理解SimpleDateFormat(“ 09-oct-08”)的最佳方法是什么? 完整代码: 这给了我:java.text.ParseException:无法解析的日期:

  • 错误: 线程“main”java.time.format.dateTimeParseException:无法解析文本“Tue 21 May”:无法从TemporalAccessor获取LocalDate:{DayOfWeek=2,DayOfMonth=21,MonthOfYear=5},类型为java.time.format.dateTimeFormatter.createError(dateTi