1. 概要
この短いチュートリアルでは、日付を表すStringをGroovyの実際の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言語でStringをDateに変換する方法を見てきました。
いつものように、ソースコードと単体テストはGitHubで入手できます。