如何解析巴西(葡萄牙)日期?
How to parse Brazil (Portugal) date?
在 java 中没有用于解析日期的巴西语言环境
我需要解析这个日期 - 2020 年 11 月 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
。
观察到的输出:
Exception in thread "main" java.time.format.DateTimeParseException:
Text '11 de Ago de 2020 09:04' could not be parsed at index 3
异常发生在这一行:
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, formatter);
当我尝试使用老式的 SimpleDateFormat
时,我得到了
Exception in thread "main" java.text.ParseException: Unparseable date:
"11 de Ago de 2020 09:04"
您的问题之一是葡萄牙语中的 'de' 使 days/month 和年份之间没有关系。 Java 不会理解,所以你必须 'hard code' 在你的模式中。 hh
表示 'clock-hour-of-am-pm' 但您没有指定 'am' 或 'pm',因此您最有可能使用 HH
。这是一个工作示例:
Locale brazilLocale = new Locale("pt", "BR");
final DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd 'de' MMM 'de' yyyy HH:mm")
.toFormatter(brazilLocale);
System.out.println(LocalDateTime.parse("11 de ago de 2020 09:04", formatted));
导致 2020-08-11T09:04
在 java 中没有用于解析日期的巴西语言环境
我需要解析这个日期 - 2020 年 11 月 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
。
观察到的输出:
Exception in thread "main" java.time.format.DateTimeParseException: Text '11 de Ago de 2020 09:04' could not be parsed at index 3
异常发生在这一行:
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, formatter);
当我尝试使用老式的 SimpleDateFormat
时,我得到了
Exception in thread "main" java.text.ParseException: Unparseable date: "11 de Ago de 2020 09:04"
您的问题之一是葡萄牙语中的 'de' 使 days/month 和年份之间没有关系。 Java 不会理解,所以你必须 'hard code' 在你的模式中。 hh
表示 'clock-hour-of-am-pm' 但您没有指定 'am' 或 'pm',因此您最有可能使用 HH
。这是一个工作示例:
Locale brazilLocale = new Locale("pt", "BR");
final DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd 'de' MMM 'de' yyyy HH:mm")
.toFormatter(brazilLocale);
System.out.println(LocalDateTime.parse("11 de ago de 2020 09:04", formatted));
导致 2020-08-11T09:04