Konvertering af en streng til en dato i Groovy

1. Oversigt

I denne korte vejledning lærer vi, hvordan man konverterer en Snor repræsenterer en dato til en reel Dato objekt i Groovy.

Vi skal dog huske på, at dette sprog er en forbedring af Java. Derfor kan vi stadig bruge hver almindelig gammel Java-metode ud over de nye Groovy-metoder.

2. Brug Datoformat

For det første kan vi analysere strenge i datoer som normalt ved hjælp af en Java Datoformat:

def mønster = "åååå-MM-dd" def input = "2019-02-28" def dato = ny SimpleDateFormat (mønster) .parse (input) 

Groovy tillader os dog lettere at udføre denne operation. Det indkapsler den samme adfærd inden for den statiske bekvemmelighedsmetodeDate.parse (strengformat, strengindgang):

def dato = Date.parse (mønster, input) 

Kort sagt er denne metode en udvidelse af java.util.Date objekt, og internt instantierer det en java.text.DateFormatved hver påkaldelse, for trådsikkerhed.

2.1. Problemer med kompatibilitet

For at afklare, Date.parse (strengformat, strengindgang) metoden er tilgængelig siden version 1.5.7 af Groovy.

Version 2.4.1 introducerede en variant, der accepterede en tredje parameter, der angiver en tidszone: Date.parse (strengformat, strengindgang, tidszonezone).

Fra 2.5.0 har der dog været en brudende ændring, og disse forbedringer sendes ikke længere med groovy-all.

Så fremadrettet skal de inkluderes som et separat modul, navngivet groovy-dateutil:

 org.codehaus.groovy groovy-dateutil 2.5.6 

Der er også version 3.0.0, men den er i øjeblikket i Alpha-scenen.

3. Brug af JSR-310 LocalDate

Siden version 8 introducerede Java et helt nyt sæt værktøjer til håndtering af datoer: Date / Time API.

Disse API'er er bedre af flere grunde og bør foretrækkes frem for de arv.

Lad os se, hvordan vi udnytter java.time.LocalDate parsing-muligheder fra Groovy:

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

4. Konklusion

Vi har set, hvordan man transformerer en Snor ind i en Dato på Groovy-sproget og være opmærksom på særegenhederne mellem de specifikke versioner.

Som altid er kildekoden og enhedstest tilgængelige på GitHub.