Menukar Rentetan ke Tarikh di Groovy

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan belajar bagaimana menukar String yang mewakili tarikh menjadi objek Date sebenar di Groovy.

Namun, kita harus ingat bahawa bahasa ini adalah penambahbaikan Java. Oleh itu, kita masih boleh menggunakan setiap kaedah Java lama biasa, selain kaedah Groovy baru.

2. Menggunakan DateFormat

Pertama, kita dapat menguraikan Rentetan ke dalam Tarikh, seperti biasa, menggunakan Java DateFormat :

def pattern = "yyyy-MM-dd" def input = "2019-02-28" def date = new SimpleDateFormat(pattern).parse(input) 

Groovy, bagaimanapun, membolehkan kami melakukan operasi ini dengan lebih mudah. Ini merangkumi tingkah laku yang sama dalam kaedah statik kemudahan Date.parse (String format, String input) :

def date = Date.parse(pattern, input) 

Ringkasnya, kaedah itu adalah lanjutan dari objek java.util.Date , dan secara dalaman ia menunjukkan java.text.DateFormat pada setiap permintaan, untuk keselamatan benang.

2.1. Isu Keserasian

Untuk menjelaskan, kaedah Date.parse (String format, String input) tersedia sejak versi 1.5.7 dari Groovy.

Versi 2.4.1 memperkenalkan varian yang menerima parameter ketiga yang menunjukkan zona waktu: Date.parse (String format, String input, TimeZone zone) .

Dari 2.5.0, bagaimanapun, telah terjadi perubahan besar dan peningkatan tersebut tidak dihantar lagi dengan semua.

Jadi, ke depan, mereka perlu dimasukkan sebagai modul yang berasingan, yang diberi nama groovy-dateutil :

 org.codehaus.groovy groovy-dateutil 2.5.6  

Terdapat juga versi 3.0.0, tetapi kini dalam peringkat Alpha.

3. Menggunakan JSR-310 LocalDate

Sejak versi 8, Java memperkenalkan sekumpulan alat baru untuk menangani tarikh: API Tarikh / Masa.

API ini lebih baik kerana beberapa sebab dan harus lebih disukai daripada yang lama .

Mari lihat bagaimana memanfaatkan keupayaan menguraikan java.time.LocalDate dari Groovy:

def date = LocalDate.parse(input, pattern) 

4. Kesimpulan

Kami telah melihat bagaimana mengubah String menjadi Date dalam bahasa Groovy, dengan memperhatikan keistimewaan antara versi tertentu.

Seperti biasa, kod sumber dan ujian unit tersedia di GitHub.