【发布时间】:2020-06-12 09:59:51
【问题描述】:
在 java 中没有用于解析日期的巴西语言环境
我需要解析这个日期 - 11 de Ago de 2020 09:04
我创造
BrazilLocale = Locale.Builder().setLanguage("pt").setRegion("BR").build()
这个模式dd MMM yyyy hh:mm 但它不起作用。
例如我们可以试试:
Locale brazilLocale = new Locale.Builder().setLanguage("pt").setRegion("BR").build();
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("dd MMM yyyy hh:mm", brazilLocale);
String stringToParse = "11 de Ago de 2020 09:04";
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, formatter);
System.out.println(dateTime);
预期输出:2020-08-11T09:04。
观察到的输出:
线程“主”java.time.format.DateTimeParseException 中的异常: 无法在索引 3 处解析文本“11 de Ago de 2020 09:04”
异常发生在这一行:
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, formatter);
当我尝试使用老式的SimpleDateFormat 时,我得到了
线程“主”java.text.ParseException 中的异常:无法解析的日期: "2020 年 11 月 09:04"
【问题讨论】:
-
您能否提供更多上下文。你是如何使用这种模式的?你能提供更多的代码吗?
-
欢迎来到 Stack Overflow。更正:Java 包含巴西葡萄牙语语言环境,您的语言环境变量有效。也许您的问题是您的字符串使用了错误的大小写。至少在我的 Java 11 上,除非我指示我的
DateTimeFormatterBuilder使用不区分大小写的解析,否则语言环境需要全部小写的“之前”。如果您提供不适合您的代码,我们可以为您提供更好的帮助。 How to create a Minimal, Reproducible Example -
正如您所观察到的,没有最小可重现代码示例以及预期和观察到的结果的问题往往会在 Stack Overflow 上快速关闭。我已经编辑了您的问题以显示一种可以完成的方法。我们是否可以重新打开您的问题取决于三个具有足够声誉的用户注意到编辑并投票重新打开。我不知道现在是否会发生这种情况,在提出问题 19 小时后和周末访问的用户较少。我们拭目以待。
标签: java date datetime locale datetime-parsing