Conversion d'une chaîne en date dans Groovy

1. Vue d'ensemble

Dans ce court didacticiel, nous allons apprendre à convertir une chaîne représentant une date en un objet Date réel dans Groovy.

Cependant, nous devons garder à l'esprit que ce langage est une amélioration de Java. Par conséquent, nous pouvons toujours utiliser toutes les anciennes méthodes Java, en plus des nouvelles Groovy.

2. Utilisation de DateFormat

Tout d'abord, nous pouvons analyser les chaînes en dates, comme d'habitude, en utilisant un format de date Java :

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

Groovy nous permet cependant d'effectuer cette opération plus facilement. Il encapsule le même comportement dans la méthode statique de commodité Date.parse (format de chaîne, entrée de chaîne) :

def date = Date.parse(pattern, input) 

En bref, cette méthode est une extension de l' objet java.util.Date , et en interne, elle instancie un java.text.DateFormat à chaque appel, pour la sécurité des threads.

2.1. Problèmes de compatibilité

Pour clarifier, la méthode Date.parse (String format, String input) est disponible depuis la version 1.5.7 de Groovy.

La version 2.4.1 a introduit une variante acceptant un troisième paramètre indiquant un fuseau horaire: Date.parse (format String, String input, TimeZone zone) .

Depuis la version 2.5.0, cependant, il y a eu un changement radical et ces améliorations ne sont plus livrées avec groovy-all.

Donc, à l'avenir, ils doivent être inclus en tant que module séparé, nommé groovy-dateutil :

 org.codehaus.groovy groovy-dateutil 2.5.6  

Il existe également la version 3.0.0, mais elle est actuellement au stade Alpha.

3. Utilisation de JSR-310 LocalDate

Depuis la version 8, Java a introduit un tout nouvel ensemble d'outils pour gérer les dates: l'API Date / Heure.

Ces API sont meilleures pour plusieurs raisons et doivent être préférées aux anciennes .

Voyons comment exploiter les capacités d'analyse java.time.LocalDate de Groovy:

def date = LocalDate.parse(input, pattern) 

4. Conclusion

Nous avons vu comment transformer une chaîne en une date dans le langage Groovy, en faisant attention aux particularités entre les versions spécifiques.

Comme toujours, le code source et les tests unitaires sont disponibles à l'adresse over sur GitHub.