代码之家  ›  专栏  ›  技术社区  ›  Galet

如何在Java中解析自定义的多种日期格式

  •  2
  • Galet  · 技术社区  · 4 年前

    场景1: 顺序模式:

    • 年月日

    DateTimeFormatter formatter=新建DateTimeFormatterBuilder() .appendor可选(DateTimeFormatter.of模式(“年/月/日/时”) .appendor可选(DateTimeFormatter.of模式(“yyMMdd”)).toFormatter();

    String dateString1 = "201028h05";
    
    LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
    

    不起作用:

    String dateString2 = "201028";
    
    LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
    

    场景2: 顺序模式:

    • 年月日

    .appendor可选(DateTimeFormatter.of模式(“yyMMdd”)).toFormatter(); .appendor可选(DateTimeFormatter.of模式(“年/月/日/时”)

    不起作用:

      String dateString1 = "201028h05";
        
        LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
        
    

    String dateString2=“201028”;
    
    LocalDateTime日期1=LocalDateTime.parse(dateString2,格式化程序);
    

    1 回复  |  直到 4 年前
        1
  •  4
  •   Matt    4 年前

    你可以用 [] 定义阵列中的可选零件。此外,您还需要设置默认值,以便在没有提供时间时不会出现异常。

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("yyMMdd['h'HH]")
            .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
            .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
            .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
            .toFormatter();
    
    String dateString1 = "201028h05";
    LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
    System.out.println(date1);
    
    String dateString2 = "201028";
    LocalDateTime date2 = LocalDateTime.parse(dateString2, formatter);
    System.out.println(date2);
    

    输出:

    2020-10-28T05:00
    2020-10-28T00:00
    
    推荐文章