【问题标题】:Java: format date string "150520" into "May 20, 2015" [duplicate]Java:将日期字符串“150520”格式化为“2015 年 5 月 20 日”[重复]
【发布时间】:2017-05-10 20:38:14
【问题描述】:

我在 Linux 上使用 Java 8,代码如下

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMDD",Locale.ENGLISH);
LocalDate exampleDate  = LocalDate.parse(myDate, formatter);

其中myDate 是一个等于“150520”的字符串。我收到错误:

java.time.format.DateTimeParseException: Text '150520' could not 
be parsed: Conflict found: Field MonthOfYear 1 differs from 
MonthOfYear 5 derived from 2015-01-20

例如,我想返回 May 20, 2015。知道有什么问题吗?

更新

将日期代码 D 替换为 d 可消除此错误。如何格式化成可读的日期?

【问题讨论】:

标签: java


【解决方案1】:

你想要yyMMdd。大写的D 解析“年中的某天”而不是“月中的某日”。

[编辑]打印部分,你可以做DateTimeFormatter.ofPattern("MMM dd, yyyy").format(theDate)

【讨论】:

    【解决方案2】:

    改变

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMDD",Locale.ENGLISH);

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd",Locale.ENGLISH);

    【讨论】:

      【解决方案3】:

      您需要使用此格式字符串"yyMMdd"。根据docs

      Symbol  Meaning                     Presentation      Examples
      ------  -------                     ------------      -------
      D       day-of-year                 number            189
      d       day-of-month                number            10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 2019-06-15
        • 1970-01-01
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多