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

Java语言时间总体安排dd MMM yyyy格式的DateTimeParseException[重复]

皇甫建木
2023-03-14

我正在尝试解析dd-MMM-yyyy格式的日期。

package com.company;

import javax.swing.text.DateFormatter;
import java.time.format.DateTimeFormatter;

import java.time.*;
import java.util.Locale;

public class Main {

    public static void main(String[] args) {
        // write your code here
        MonthDay m;
        Locale.setDefault(Locale.ENGLISH);
        DateTimeFormatter dTF = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
        String dateString = "12-jan-1900";

        try
        {
            LocalDate ddd = LocalDate.parse(dateString,dTF);
            System.out.println(ddd.toString());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        //System.out.println(d.toString());

    }
}

它抛出以下异常

java.time.format.DateTimeParseException: Text '12-jan-1900' could not be parsed at index 3
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDate.parse(LocalDate.java:400)
    at com.company.Main.main(Main.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

它可以很好地解析dd-MM-yyyy格式,但无法解析dd-MM-yyyy格式。我厌倦了设置语言环境。美国也是,但在这种情况下也失败了。

共有1个答案

荀学文
2023-03-14

原因是解析默认区分大小写,格式化程序无法识别"jan"。它只会识别"Jan"

您可以通过使用DateTimeFormatterBuilder并调用ParseCaseSensitive()来构造不区分大小写的解析器:

将格式化程序其余部分的分析样式更改为不区分大小写。

解析可以区分大小写或不区分大小写-默认情况下区分大小写。此方法允许更改解析的区分大小写设置。

DateTimeFormatter dTF = 
    new DateTimeFormatterBuilder().parseCaseInsensitive()
                                  .appendPattern("dd-MMM-yyyy")
                                  .toFormatter();
 类似资料:
  • 我试图告诉Gson如何解析LocalDateTime和LocalDate,但我遇到了这个错误,在我看来它应该与格式匹配。我在想,要么我对解析日期有些不了解,要么我对Gson有些不了解。 java.time.format.DateTimeParseException:无法在索引0解析文本2017101800000700

  • 这看起来是一件很简单的事情,但我没有做到。 我有一个字符串模式,它是yyyyMMddHH,我试图将其解析为LocalDateTime的一个实例 代码如下: 它引发以下异常: 无法从输入中解析HH字段 我在这里查看了javadoc,但这没有帮助。 为什么我会有这个例外?如何解决这个问题? 编辑: 我无法删除 以下是限制条件: 用户将给出和(可能是和) 模式必须始终有日期(年月日) 中的时间是可选的,

  • 我有几行代码,如下所示 这给了以下例外 如果我将月份从11月改为11月,效果很好。我从数据库表中获取此值。我是否必须按程序进行更改,或者有任何方法来处理它?

  • 问题内容: 我遇到了一个非常奇怪的问题,听起来像是系统错误。我只想使用小时和分钟信息来格式化日期,并在必要时显示AM / PM。 这是我的代码: 如您所见,我正在使用而不使用,并且如Apple文档所述,如果用户选择12h格式,它应该自动添加AM / PM: 时间的表示可能是13:00。但是,在iOS中,如果用户将24小时制切换为关闭,则时间可能是1:00 pm。 我发现它可以在我的设备(我位于欧洲

  • 本文向大家介绍C#留言时间格式化,包括了C#留言时间格式化的使用技巧和注意事项,需要的朋友参考一下 平台:Vs2012 主要实现例如空间发表说说时间的显示,如:某人在10秒前回复了你这种效果,可用在Web浏览器,窗体,等... 计算两个时间差值的函数,返回时间差的绝对值: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 问题内容: 我是Java和Android开发的新手,所以这可能是一个愚蠢的问题,但是我已经搜寻了好几天,却找不到解决方案: 我尝试根据用户的语言环境输出a 。 在StackOverflow上搜索使我想到了这一点: 输出: 在我的法语本地电话上。差不多了 我如何也输出 小时,分钟和秒部分 的,使用用户的语言环境?我一直在寻找android文档,但找不到任何东西。 非常感谢。 问题答案: 用 参考:h