java - Java 日期解析代码有什么问题?

标签 java date parsing localization java-time

这段Java代码:

LocalDate.parse("12 Сен 2018", DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(new Locale("ru", "RUS")).ofPattern("dd MMM yyyy"));

导致

java.time.format.DateTimeParseException: Text '12 Сен 2018' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
    at java.base/java.time.LocalDate.parse(LocalDate.java:428)

尝试了所有Proper Russian month string translation Java示例 - 没有结果。

这段代码有什么问题?

注意:我使用的是 Java 8

更新: 在本地计算机和在线编译器中尝试过此操作 - 在线编译器在本地计算机上工作 - 出现错误。

    Map<Long, String> map = new HashMap<>();
    map.put(1L, "Янв");
    map.put(2L, "Фев");
    map.put(3L, "Мар");
    map.put(4L, "Апр");
    map.put(5L, "Май");
    map.put(6L, "Июн");
    map.put(7L, "Июл");
    map.put(8L, "Авг");
    map.put(9L, "Cен");
    map.put(10L, "Окт");
    map.put(11L, "Ноя");
    map.put(12L, "Дек");
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("dd ")
            .appendText(ChronoField.MONTH_OF_YEAR, map)
            .appendPattern(" yyyy")
            .toFormatter(new Locale("ru", "RU"));       
    System.out.println(LocalDate.parse("12 Cен 2018", formatter));

最佳答案

你需要为此创建一个自定义格式化程序,这并不复杂(第一次了解俄语,可以方便地回答 stackoverflow 问题):

Map<Long, String> map = new HashMap<>();
    map.put(1L, "янв");
    map.put(2L, "фев");
    map.put(3L, "мар");
    map.put(4L, "апр");
    map.put(5L, "май");
    map.put(6L, "июн");
    map.put(7L, "июл");
    map.put(8L, "авг");
    map.put(9L, "сен");
    map.put(10L, "окт");
    map.put(11L, "ноя");
    map.put(12L, "дек");
    DateTimeFormatter fmt = new DateTimeFormatterBuilder()
            .appendPattern("dd ")
            .appendText(ChronoField.MONTH_OF_YEAR, map)
            .appendPattern(" yyyy")
            .toFormatter(new Locale("ru"));

 System.out.println(LocalDate.parse("12 сен 2018", fmt)); // 2018-09-12

关于java - Java 日期解析代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52308766/

相关文章:

java - 错误 : Execution failed for task ':app:packageAllDebugClassesForMultiDex'

java - 代码设计使以后添加类似任务变得容易

php - 无法将字符串或日期时间对象插入 mysql

java - Oracle Java - 将可选日期参数添加到准备好的语句中

Python Regex - 在日期之前或之后高效

java - Antlr4 中未找到 getType() 方法

java - Java 中的泛型声明差异

java - 只匹配字符串的第一个和最后一个字符

android - 使用 XML Dom Parser 解析时如何检查根节点值?

Android 我想从在线数据库流式传输图像