【发布时间】: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
如何在 Groovy 中解析像 "10/07/2018 10:07 pm" 这样的日期格式。
下面我们使用的格式
Date.parse("dd-MM-yyyy hh:MM:SS","10/07/2018 10:07 pm")
对吗
【问题讨论】:
标签: groovy
不,应该是
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")
)
【讨论】:
我建议使用 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)
【讨论】:
格式应该是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
【讨论】: