Groovy 中字符串转换为日期
Contents
1. 概述
在这个简短的教程中,我们将学习如何在Groovy 中将表示日期的String转换为真实的Date对象。
但是,我们应该记住,这种语言是对 Java 的增强。因此,除了新的 Groovy 方法之外,我们仍然可以使用所有普通的旧 Java 方法。
2. 使用DateFormat
首先,我们可以像往常一样使用 Java DateFormat将字符串解析为日期:
def pattern = "yyyy-MM-dd"
def input = "2019-02-28"
def date = new SimpleDateFormat(pattern).parse(input)
然而,Groovy 允许我们更轻松地执行此操作。它在便利的静态方法 *Date.parse(String format, String input) *中封装了相同的行为:
def date = Date.parse(pattern, input)
简而言之,该方法是java.util.Date对象的扩展,并且在内部它会在每次调用时实例化一个java.text.DateFormat ,以确保线程安全。
2.1. 兼容性问题
澄清一下,*Date.parse(String format, String input)*方法从 Groovy 1.5.7 版开始可用。
版本 2.4.1 引入了一个变体,它接受指示时区的第三个参数:Date.parse(String format, String input, TimeZone zone)。
但是,从 2.5.0 开始,发生了重大变化 ,这些增强功能不再随groovy-all 一起提供。 因此,展望未来,它们需要作为一个单独的模块包含在内,名为groovy-dateutil :
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-dateutil</artifactId>
<version>2.5.6</version>
</dependency>
还有 3.0.0 版本,但目前处于 Alpha 阶段。
3. 使用 JSR-310 LocalDate
从版本 8 开始,Java 引入了一套全新的工具来处理日期:日期/时间 API 。
出于多种原因,这些 API 更好,应该优先于旧的API 。
让我们看看如何利用 Groovy 的java.time.LocalDate解析功能:
def date = LocalDate.parse(input, pattern)