1. 概要

この短いチュートリアルでは、日付を表すStringGroovyの実際の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では、タイムゾーンを示す3番目のパラメーター 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もありますが、現在アルファ段階です。

3. JSR-310の使用LocalDate

バージョン8以降、Javaは日付を処理するためのまったく新しいツールセット Date / TimeAPIを導入しました。

これらのAPIはいくつかの理由で優れており、は従来のAPIよりも優先されるべきです。

Groovyのjava.time.LocalDate解析機能を活用する方法を見てみましょう。

def date = LocalDate.parse(input, pattern)

4. 結論

特定のバージョン間の特殊性に注意しながら、Groovy言語でStringDateに変換する方法を見てきました。

いつものように、ソースコードと単体テストはGitHubで入手できます。