1. Classe DateTimeFormatter
La classe spéciale DateTimeFormatter
trouve son chemin dans l'API Date Time. Son but est de permettre aux programmeurs de convertir aussi facilement que possible une date et une heure dans le format exact qu'ils souhaitent. Et nous sommes heureux d'annoncer que les créateurs de Java ont réussi.
Son utilisation est très simple. Tout d'abord, vous devez créer une DateTimeFormatter
classe et transmettre un modèle qui spécifie comment il affichera la date et l'heure :
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Où dtf
est une DateTimeFormatter
variable. est une méthode statique de la classe. Et pattern est une chaîne qui spécifie le modèle qui sera utilisé pour afficher la date et l'heure.DateTimeFormatter.ofPattern()
DateTimeFormatter
Exemples
Code | Sortie console |
---|---|
|
|
Dans l'exemple ci-dessus, nous utilisons la ofPattern()
méthode pour créer un DateTimeFormatter
objet basé sur le modèle. Et dans la ligne suivante, nous utilisons la format()
méthode pour convertir un LocalDateTime
objet en chaîne. Vous voyez le résultat à l'écran.
Vous pouvez transmettre presque n'importe quel objet de l'API Date/Heure à la format()
méthode.
Le statique ofPattern()
est également très simple : il prend un motif en argument et renvoie un DateTimeFormatter
objet. La partie la plus intéressante se trouve dans le motif.
2. Modèle de formatage
La chaîne transmise en tant que modèle est utilisée comme modèle lors de l'affichage d'informations. MM est remplacé par le numéro du mois, jj par le jour du mois et aa par le numéro de l'année. La casse des lettres est importante.
Le tableau complet pour ces modèles de temps est celui-ci :
Lettre | Signification |
---|---|
y | Année |
M | Mois |
d | Jour |
H | Heures |
m | Minutes |
s | Secondes |
S | Millièmes de seconde |
n | Nanosecondes. |
Pas particulièrement difficile à retenir.
Mais pourquoi le motif de l'exemple comprend-il les lettres répétées MM, jj et aa ? Eh bien, c'est là que ça devient plus intéressant.
Idée générale
Le nombre de lettres affecte la longueur du texte. Plus il y a de lettres, plus le texte sera long.
Si la lettre H est spécifiée une fois, alors 9 heures seront affichées sous la forme 9, mais si la lettre H est spécifiée deux fois de suite, alors 9 heures seront affichées sous la forme 09.
Si la lettre y est spécifiée 2 fois de suite, l'année est écrite sur 2 chiffres. Si cela se produit 4 fois de suite, alors 4 chiffres sont utilisés.
Si la lettre M est spécifiée 2 fois de suite, le numéro du mois est écrit. Si 3 fois de suite, le nom du mois (ses 3 premières lettres) est utilisé. Si 4 fois de suite, le nom complet du mois est utilisé.
Exemple:
Code | Sortie console |
---|---|
|
|
3. Compléter le tableau des patrons
Le tableau complet est assez grand et super intéressant :
Modèle | Les variantes du motif | Exemple | Description |
---|---|---|---|
y | aaaaaaaa | 19; 2019 | Année |
M/G | M, MM, MMM, MMMM, MMMMM | 1; 01 ; Jan; Janvier; J | Mois |
d | j, jj | 9; 09 | Jour |
H | H, HH | 2 ; 02 | Heures |
m | m, mm | 3 ; 03 | Minutes |
s | s, ss | 5 ; 05 | Secondes |
S | S, SS, SSS, ... | 1; 12; 123 | Millièmes de seconde |
n | n | 123456789 | Nanosecondes |
g | G, GGGG, GGGGGG | PUBLICITÉ; Anno Domini ; UN; | Ère |
Q/q | q, qq, qqq, qqqq | 3 ; 03 ; Q3 ; 3e trimestre | Trimestre |
w | w | 13 | Semaine de l'année |
O | O | 3 | Semaine du mois |
E | EEE, EEEE, EEEEE | Lun; Lundi; M | Jour de la semaine |
e/c | e, ee, eee, eeee, eeeee | 1; 01 ; Lun; Lundi; M | Jour de la semaine |
un | un | PM | AM ou PM |
h | h | 12 | Horloge de 12 heures. |
V | VV | Europe/Helsinki | Fuseau horaire |
z | z zzzz | EET; Heure normale d'Europe de l'Est | Fuseau horaire |
O | O OOOO | GMT+2 ; GMT+02:00 | Fuseau horaire |
Soit dit en passant, ce n'est pas vraiment une version complète. Vous pouvez trouver la version la plus complète ici .
4. Temps d'analyse
La DateTimeFormatter
classe est également intéressante pour sa capacité non seulement à convertir une date et une heure en une chaîne selon un modèle donné, mais aussi à effectuer l'opération inverse !
L'analyse d'une chaîne consiste à la diviser en jetons significatifs.
Voici à quoi ça ressemble :
Code | Sortie console |
---|---|
|
|
Tout d'abord, nous créons un DateTimeFormatter
objet et définissons le modèle utilisé pour l'analyse.
Ensuite, nous appelons la méthode LocalDate.parse()
ou LocalTime.parse()
ou LocalDateTime.parse()
et transmettons la chaîne à analyser avec l' DateTimeFormatter
objet, qui comprend comment analyser le texte passé et quel modèle doit être utilisé pour le faire.
Autre exemple : cette fois, nous allons analyser le temps.
Code | Sortie console |
---|---|
|
|