Groovy中无法解析的日期

时间:2018-07-10 16:43:57

标签: groovy

如何在Groovy中解析日期格式,例如"10/07/2018 10:07 pm"

我们使用以下格式

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

是否正确

3 个答案:

答案 0 :(得分: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")
)

答案 1 :(得分:0)

我建议使用Java 8类型而不是java.util.Date。可悲的是,没有一种简单的方法可以用DateTimeFormatter来容纳小写的“ pm”。便宜的方法是将String大写:

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)

答案 2 :(得分:0)

格式应为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