【问题标题】:Unparseable date in GroovyGroovy 中无法解析的日期
【发布时间】:2018-07-10 16:43:56
【问题描述】:

如何在 Groovy 中解析像 "10/07/2018 10:07 pm" 这样的日期格式。

下面我们使用的格式

Date.parse("dd-MM-yyyy hh:MM:SS","10/07/2018 10:07 pm")

对吗

【问题讨论】:

    标签: groovy


    【解决方案1】:

    不,应该是

    Date d = Date.parse("dd/MM/yyyy hh:mm aa","10/07/2018 10:07 pm")
    

    ​ 或者如果你在 Java 8 之上运行,你可以使用更好的

    LocalDateTime d = LocalDateTime.parse(
        "10/07/2018 10:07 pm",
        DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm aa")
    )
    

    【讨论】:

      【解决方案2】:

      我建议使用 Java 8 类型而不是 java.util.Date。遗憾的是,没有一种直接的方法可以将小写“pm”与DateTimeFormatter 兼容。便宜的方法是将字符串大写:

      java.time.LocalDateTime.parse('10/07/2018 10:07 pm'.toUpperCase(), 'dd/MM/yyyy hh:mm a')
      

      SO post 中所述,更“正确”的方式是:

      import java.time.LocalDateTime
      import java.time.format.*
      import java.time.temporal.ChronoField
      
      DateTimeFormatter dtf = new DateTimeFormatterBuilder()
              .appendPattern('dd/MM/yyyy hh:mm ')
              .appendText(ChronoField.AMPM_OF_DAY, [(0L):'am',(1L):'pm'])
              .toFormatter();
      LocalDateTime.parse('10/07/2018 10:07 pm', dtf)
      

      【讨论】:

        【解决方案3】:

        格式应该是dd-MM-yyyy hh:MM:SS a

        Date.parse("dd-MM-yyyy hh:MM:SS a","10-07-2018 10:07:00 am")
        Date.parse("dd/MM/yyyy hh:MM a","10/07/2018 10:07 pm")
        

        ​请在此处查看结果: https://groovyconsole.appspot.com/script/5203535180333056

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-30
          相关资源
          最近更新 更多