在Groovy中将字符串转换为日期

Converting a String to a Date in Groovy

1.概述

在这个简短的教程中,我们将学习如何在Groovy中将代表日期的String转换为真实的Date对象。

但是,我们应该记住,这种语言是Java的增强。因此,除了新的Groovy方法之外,我们仍然可以使用所有普通的Java方法。

2.使用DateFormat

首先,我们可以像往常一样使用Java DateFormat将字符串解析为Date:

1
2
3
4
def pattern ="yyyy-MM-dd"
def input ="2019-02-28"

def date = new SimpleDateFormat(pattern).parse(input)

但是,Groovy允许我们更轻松地执行此操作。它在便利静态方法Date.parse(String format,String input)中封装了相同的行为:

1
def date = Date.parse(pattern, input)

简而言之,该方法是java.util.Date对象的扩展,并且在内部每次调用时都会实例化java.text.DateFormat,以确保线程安全。

2.1。相容性问题

为了明确起见,自Groovy的1.5.7版开始,就可以使用Date.parse(String format,String input)方法。

2.4.1版引入了一个变量,该变量接受指示时区的第三个参数:Date.parse(字符串格式,字符串输入,TimeZone区域)。

但是,从2.5.0版本开始,发生了重大变化,而所有增强功能不再随groovy-all一起提供。

因此,接下来,它们需要作为一个单独的模块包含在内,名为groovy-dateutil:

1
2
3
4
5
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    groovy-dateutil</artifactId>
    <version>2.5.6</version>
</dependency>

还有版本3.0.0,但目前处于Alpha阶段。

3.使用JSR-310 LocalDate

从版本8开始,Java引入了一套全新的日期处理工具:Date / Time API。

这些API之所以更好,有几个原因,应该优先于传统的API。

让我们看看如何利用Groovy的java.time.LocalDate解析功能:

1
def date = LocalDate.parse(input, pattern)

4。结论

我们已经了解了如何使用Groovy语言将aString转换为aDate,并注意了特定版本之间的特殊性。

与往常一样,源代码和单元测试可在GitHub上获得。