Prevod reťazca na dátum v Groovy

1. Prehľad

V tomto krátkom návode sa dozvieme, ako previesť súbor String predstavujúci dátum v realitu Dátum objekt v Groovy.

Mali by sme však mať na pamäti, že tento jazyk je vylepšením Javy. Preto môžeme stále používať každú obyčajnú starú metódu Java, okrem nových Groovy.

2. Pomocou Formát dátumu

Najskôr môžeme analyzovať reťazce do dátumov, ako obvykle, pomocou Java Formát dátumu:

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

Groovy nám však umožňuje vykonávať túto operáciu ľahšie. Zapuzdruje to isté správanie vo vnútri pohodlnej statickej metódyDate.parse (formát reťazca, vstup reťazca):

def date = Date.parse (vzor, ​​vstup) 

Stručne povedané, táto metóda je rozšírením java.util.Date objekt a vnútorne vytvára a java.text.DateFormatpri každom vyvolaní kvôli bezpečnosti nití.

2.1. Problémy s kompatibilitou

Pre upresnenie Date.parse (formát reťazca, vstup reťazca) metóda je k dispozícii od verzie 1.5.7 Groovy.

Verzia 2.4.1 predstavila variant akceptujúci tretí parameter označujúci časové pásmo: Date.parse (formát reťazca, zadanie reťazca, zóna TimeZone).

Od 2.5.0 však došlo k prelomovej zmene a tieto vylepšenia sa už nedodávajú groovy-všetko.

Do budúcnosti ich teda treba zahrnúť ako samostatný modul s názvom groovy-dateutil:

 org.codehaus.groovy groovy-dateutil 2.5.6 

K dispozícii je tiež verzia 3.0.0, ktorá je však momentálne v štádiu Alpha.

3. Používanie JSR-310 LocalDate

Od verzie 8 predstavila Java úplne novú sadu nástrojov na prácu s dátumami: API Date / Time.

Tieto API sú lepšie z niekoľkých dôvodov a by sa malo uprednostniť pred staršími.

Pozrime sa, ako využiť java.time.LocalDate možnosti analýzy od Groovy:

def date = LocalDate.parse (vstup, vzor) 

4. Záver

Videli sme, ako transformovať a String do a Dátum v jazyku Groovy, venujte pozornosť zvláštnostiam medzi konkrétnymi verziami.

Ako vždy, zdrojový kód a testy jednotiek sú k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found