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.