1. Panoramica
In questo breve tutorial, impareremo come convertire una stringa che rappresenta una data in un vero oggetto Date in Groovy.
Tuttavia, dobbiamo tenere presente che questo linguaggio è un miglioramento di Java. Pertanto, possiamo ancora utilizzare tutti i vecchi metodi Java, oltre ai nuovi Groovy.
2. Utilizzo di DateFormat
In primo luogo, possiamo analizzare le stringhe in date, come al solito, utilizzando Java DateFormat :
def pattern = "yyyy-MM-dd" def input = "2019-02-28" def date = new SimpleDateFormat(pattern).parse(input)
Groovy, invece, ci permette di eseguire questa operazione più facilmente. Incapsula lo stesso comportamento all'interno del comodo metodo statico Date.parse (formato String, input String) :
def date = Date.parse(pattern, input)
In breve, quel metodo è un'estensione dell'oggetto java.util.Date e internamente istanzia un java.text.DateFormat ad ogni invocazione, per la sicurezza dei thread.
2.1. Problemi di compatibilità
Per chiarire, il metodo Date.parse (String format, String input) è disponibile dalla versione 1.5.7 di Groovy.
La versione 2.4.1 ha introdotto una variante che accetta un terzo parametro che indica un fuso orario: Date.parse (formato stringa, input stringa, fuso orario) .
Dalla 2.5.0, tuttavia, c'è stato un cambiamento radicale e quei miglioramenti non vengono più forniti con groovy-all.
Quindi, andando avanti, devono essere inclusi come un modulo separato, chiamato groovy-dateutil :
org.codehaus.groovy groovy-dateutil 2.5.6
C'è anche la versione 3.0.0, ma è attualmente in fase Alpha.
3. Utilizzo di JSR-310 LocalDate
Dalla versione 8, Java ha introdotto una serie completamente nuova di strumenti da gestire con le date: l'API Data / Ora.
Queste API sono migliori per diversi motivi e dovrebbero essere preferite rispetto a quelle legacy .
Vediamo come sfruttare le funzionalità di analisi java.time.LocalDate da Groovy:
def date = LocalDate.parse(input, pattern)
4. Conclusione
Abbiamo visto come trasformare una stringa in una data nel linguaggio Groovy, prestando attenzione alle peculiarità tra le versioni specifiche.
Come sempre, il codice sorgente e gli unit test sono disponibili su GitHub.