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

Java 8日期-时间解析,可选2-4年组件[重复]

房冥夜
2023-03-14
        public static LocalDate parseDateString(String date) {
            DateTimeFormatter optionalFullYearParser = java.time.format.DateTimeFormatter.ofPattern("[dd-MM-yy][dd-MM-yyyy]");
            DateTimeFormatter parser = new DateTimeFormatterBuilder()
                    .appendOptional(optionalFullYearParser)
                    .appendValueReduced(ChronoField.YEAR, 2, 4, 1900)
                    .toFormatter(new Locale ("nl","NL"));

            return java.time.LocalDate.parse(date,parser);
        }

        System.out.println(parseDateString("11-10-56").toString());
        System.out.println(parseDateString("11-10-1956").toString());
        System.out.println(parseDateString("08-05-51").toString());

共有1个答案

林和畅
2023-03-14

不需要2个格式化程序对象来完成此操作,并且在使用AppendValuerEduced添加年份部分时,不应该在模式文本中包含年份部分。

public static LocalDate parseDateString(String date) {
    DateTimeFormatter parser = new DateTimeFormatterBuilder()
            .appendPattern("dd-MM-")
            .appendValueReduced(ChronoField.YEAR, 2, 4, 1900)
            .toFormatter(Locale.forLanguageTag("nl-NL"));
    return java.time.LocalDate.parse(date, parser);
}

测试

System.out.println(parseDateString("11-10-56").toString());
System.out.println(parseDateString("11-10-1956").toString());
System.out.println(parseDateString("08-05-51").toString());

输出

1956-10-11
1956-10-11
1951-05-08
 类似资料:
  • 我有一个文件,可以有日期修改值与日期或日期时间的格式。我曾将该值解析为: 现在,字符串也可以是

  • 问题内容: 我正在使用Joda解析日期,并且具有不使用前导零的格式,例如: 请注意,dayOfMonth字段用空白填充左。 目前,我似乎不得不使用两种不同的格式,如果其中一种失败,则需要重新解析 是否有可以同时处理两种情况的单一格式(或API开关)?(SimpleDateFormat的答案是否相同-我不使用?) 问题答案: 我刚刚创建了一个快速程序来检查这一点- 输出是- 因此,即使source2

  • 如何将字符串日期格式转换为日期,我有格式为以下格式的日期字符串: 接下来,我尝试了,但没有运气。 所有上述语句都存在解析错误。

  • 我装了这个 测试并返回true: 我发现SimpleDateFormat将日期转换为2021的3月1日,尽管2021的2月不是29日。如果我在2021-02-30中通过,这是无效的,但它返回正确的结果。

  • 问题内容: 我有一个系统(用Python开发),它接受 datetime作为各种格式的字符串 ,我必须 解析 它们。当前datetime字符串格式是: 现在我想要一个可以在适当的datetime对象中转换任何这些datetime格式的 通用解析器… 否则,我必须单独分析它们。因此,还请提供单独解析它们的方法(如果没有通用解析器)。 问题答案: 正如@TimPietzcker所建议的那样,dateu

  • 这是我的用户类,我要在我的数据库中保存符合ISO的日期时间。 这是我的球衣控制器: 我如何使用像泽西岛这样的日期时间格式?是否可以发送一个datatime并自动创建Java8日期时间对象?