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

无法在 java 中将字符串转换为 MMM/dd/yyy 格式

万俟皓
2023-03-14

我尝试将输入类型<code>字符串“MMM/dd/yyyy”,但当我输入输入时,它会引发异常:

线程"main"java.time.format.DateTimeParseException中的异常:无法在索引0处解析文本'DEC/12/1999'

这是我的代码

Scanner sc = new Scanner(System.in);
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MMM/dd/yyyy");
System.out.print("Please enter the first date: ");
LocalDate firstDate = LocalDate.parse(sc.nextLine(), format1);
System.out.print("Please enter the second date: ");
System.out.println(firstDate);

我该如何解决这个问题?

共有1个答案

南宫凯康
2023-03-14

在解析像< code>"DEC/12/1999"这样的< code >字符串时,您必须注意几件事情:

  • 月份的缩写没有全球标准,它们在语言(例如英语,法语,日语...)和样式(例如尾随点或不尾随点)上有所不同
  • 解析小写月份缩写和大写月份缩写有区别

这就是为什么你必须确保你的< code>DateTimeFormatter真的知道该做什么,我认为如果只是简单地用< code >构建就不行了。ofPattern(字符串,区域设置)。

向其提供有关要解析的字符串的信息:

  • 通过应用parseCaseIn敏感()
  • 使其不敏感地解析大小写
  • 通过定义Locale
  • 使其考虑语言和样式

您可以使用DateTimeFormatterBuilder来做到这一点,以下是一个示例:

public static void main(String[] args) throws IOException {
    // example input
    String date = "DEC/12/1999";
    // Build a formatter, that...
    DateTimeFormatter dtf = new DateTimeFormatterBuilder()
                                // parses independently from case,
                                .parseCaseInsensitive()
                                // parses Strings of the given pattern
                                .appendPattern("MMM/dd/uuuu")
                                // and parses English month abbreviations.
                                .toFormatter(Locale.ENGLISH);
    // Then parse the String with the specific formatter
    LocalDate localDate = LocalDate.parse(date, dtf);
    // and print the result in a different format.
    System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));
}

输出:

1999-12-12
 类似资料:
  • 我试图通过获取日期然后填充表来获取存储在数据库中的数据。 这里的问题是,它给了我一个错误异常: Java语言lang.ClassCastException:类java。无法将lang.字符串转换为类java。util。日期(java.lang.String和java.util.Date位于加载程序“bootstrap”的模块java.base中) 我知道怎么了,因为 因此,有没有办法将给定值更改为

  • 我有一个pandas数据框,其中一列包含如下字符串 我想把它转换成以下格式。 我试着用熊猫。到_datetime(df['date time']),但我得到了错误未知字符串值。我还尝试将字符串拆分为两列,只转换日期部分,但遇到了类似的错误

  • 我的日期是2013年12月11日星期三东部标准时间00:00:00这种格式。我想用JavaScript将此日期转换为格式。如何在不改变时区的情况下进行转换。 我搜索了这个解决方案,发现下面的解决方案: 但我认为这不是一个好的解决方案,因为如果我的日期字符串时区从EST更改为IST或任何其他时区,它将不起作用。 是否有将日期转换为所需格式的好解决方案? 提前感谢。 编辑:如果有任何一个使用JQuer

  • 问题内容: 当我在下面的代码下运行时,出现Unparseable错误。如何将dd MMM yyyy格式转换为dd / MM / yyyy格式? 问题答案: 假设您修复了明显的语法错误,则: 您要做的就是为您需要解析的格式创建一个解析器,并为您想要的格式创建一个格式化器:

  • 问题内容: 有什么办法转换的日期到了格式? 如果我尝试这样做: 我有这个例外: 我知道主要的问题,该模式不包含小时和分钟..但是,如果我想创建一个方法,会得到a 和a 并返回 有没有正确的解决方案? 编辑: 我的目标是,制造一种方法,得到a 和a, 然后返回a 。模式可以是任何值(有效的值)。 问题答案: 使用创建LOCALDATE的,然后如果你需要它,你可以添加timepart: 要么 如果您只

  • 问题内容: 有这样的字符串。 我想将其转换为确切的日期时间格式,以将其存储在SQL中。 熟悉如下所示的许多字符串到日期的转换。 但是我需要将 带有时间戳的字符串转换为其日期格式。 谁能解释将其转换为java.util.Date格式的正确方法。 问题答案: 试试这个: 为了将来的参考,请阅读SimpleDateFormat类:http : //docs.oracle.com/javase/7/doc