Konvertere en streng til en dato i Groovy

1. Oversikt

I denne korte opplæringen lærer vi hvordan vi konverterer en String representerer en dato til en ekte Dato objekt i Groovy.

Vi bør imidlertid huske på at dette språket er en forbedring av Java. Derfor kan vi fortsatt bruke alle vanlige Java-metoder, i tillegg til de nye Groovy-metodene.

2. Bruke DateFormat

For det første kan vi analysere strenger i datoer, som vanlig, ved hjelp av en Java DateFormat:

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

Groovy tillater oss imidlertid å utføre denne operasjonen lettere. Den innkapsler den samme oppførselen i den statiske bekvemmelighetsmetodenDate.parse (strengformat, strenginngang):

def date = Date.parse (mønster, inndata) 

Kort fortalt er den metoden en utvidelse av java.util.Date objekt, og internt instantierer det en java.text.DateFormatved hver påkallelse, for trådsikkerhet.

2.1. Kompatibilitetsproblemer

For å avklare, er Date.parse (strengformat, strenginngang) metoden er tilgjengelig siden versjon 1.5.7 av Groovy.

Versjon 2.4.1 introduserte en variant som godtar en tredje parameter som indikerer en tidssone: Date.parse (strengformat, strenginngang, TimeZone-sone).

Fra 2.5.0 har det imidlertid skjedd en endring, og forbedringene sendes ikke lenger med groovy-all.

Så fremover må de inkluderes som en egen modul, navngitt groovy-dateutil:

 org.codehaus.groovy groovy-dateutil 2.5.6 

Det er også versjon 3.0.0, men den er for øyeblikket i Alpha-scenen.

3. Bruke JSR-310 LocalDate

Siden versjon 8 introduserte Java et helt nytt sett med verktøy å håndtere med datoer: Date / Time API.

Disse APIene er bedre av flere grunner og bør foretrekkes fremfor de eldre.

La oss se hvordan vi kan utnytte java.time.LocalDate parsing evner fra Groovy:

def date = LocalDate.parse (input, mønster) 

4. Konklusjon

Vi har sett hvordan vi kan transformere en String inn i en Dato på Groovy-språket, og ta hensyn til særegenheter mellom de spesifikke versjonene.

Som alltid er kildekoden og enhetstestene tilgjengelig på GitHub.