Introduction
Les classes Java SimpleDateFormat
et DateFormat
sont utilisées pour le formatage des dates. Elles sont principalement utilisées lorsque nous devons afficher ou utiliser la fonctionnalité de date et d’heure de Java. Ces deux classes sont présentes dans le package com.text
.
Java DateFormat
- La classe
DateFormat
est utilisée pour formater une date enString
en fonction de la locale spécifique fournie en entrée. - La locale est utilisée pour spécifier la région et la langue afin de rendre le code plus adapté à l’utilisateur.
- La manière d’écrire la date diffère selon les régions du monde. Par exemple, le
31 décembre 2017
sera écrit en Inde comme31-12-2017
mais la même chose sera écrite aux États-Unis d’Amérique comme12-31-2017
. - Les classes
DateFormat
ne sont pas synchronisées, il est recommandé de créer une instance séparée pour chaque thread.
A DateFormat
object can be created using the getDateInstance()
and getTimeInstance()
method of the DateFormat
class.
Locale loc = new Locale("en", "US");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, loc);
Note: Le constructeur Locale(String, String) est déprécié depuis la version 19
Locale loc = new Locale.Builder().setLanguage("en").setRegion("US").build();
Le getDateInstance
méthode de DateFormat
nécessite deux paramètres d’entrée. Le premier paramètre spécifie le DateFormat
à utiliser et le deuxième paramètre est la locale.
En utilisant format
DateFormat
classe a une méthode format
qui est responsable du formatage.
Locale locale = new Locale("fr", "FR");
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
String date = dateFormat.format(new Date());
System.out.print(date);
Ce code formatera la date en français (fr
) et dans la région France (FR
) :
Output3 janv. 2018
En utilisant getTimeInstance()
Pour créer une instance de DateFormat
, nous utilisons la méthode getDateInstance()
.
Pour effectuer un formatage de l’heure, nous avons besoin d’une instance du temps. Nous utiliserons la méthode getTimeInstance()
pour obtenir une instance du temps.
Locale locale = new Locale("fr", "FR");
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
String date = dateFormat.format(new Date());
System.out.print(date);
Ce code formatera l’heure en français (fr
) et dans la région France (FR
) :
Output11:03:01
Java SimpleDateFormat
SimpleDateFormat
est similaire à DateFormat
. La seule différence majeure entre eux est que SimpleDateFormat
peut être utilisé pour le formatage (conversion de Date
en String
) et pour l’analyse (conversion de String
en Date
) avec prise en charge de la localisation, tandis que DateFormat
n’a pas de prise en charge de la localisation. DateFormat
est une classe abstraite qui fournit un support de base pour le formatage et l’analyse des dates. SimpleDateFormat
est la classe concrète qui étend la classe DateFormat
.
SimpleDateFormat
peut être créé à l’aide du constructeur SimpleDateFormat
. Le constructeur est un constructeur paramétré et nécessite un modèle String
en tant que paramètre.
String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
La chaîne modèle
est le modèle qui sera utilisé pour formater une date et la sortie sera générée selon ce modèle comme « MM-jj-aaaa
« .
Modèles
Jetons un coup d’œil à la syntaxe des modèles qui doit être utilisée pour le modèle de formatage.
Letter for Pattern | Date or Time component | Examples |
---|---|---|
G | Era designator | AD |
y | Year | 2018 (yyyy), 18 (yy) |
M | Month in year | July (MMMM), Jul (MMM), 07 (MM) |
w | Results in week in year | 16 |
W | Results in week in month | 3 |
D | Gives the day count in the year | 266 |
d | Day of the month | 09 (dd), 9(d) |
F | Day of the week in month | 4 |
E | Day name in the week | Tuesday, Tue |
u | Day number of week where 1 represents Monday, 2 represents Tuesday and so on | 2 |
a | AM or PM marker | AM |
H | Hour in the day (0-23) | 12 |
k | Hour in the day (1-24) | 23 |
K | Hour in am/pm for 12 hour format (0-11) | 0 |
h | Hour in am/pm for 12 hour format (1-12) | 12 |
m | Minute in the hour | 59 |
s | Second in the minute | 35 |
S | Millisecond in the minute | 978 |
z | Timezone | Pacific Standard Time; PST; GMT-08:00 |
Z | Timezone offset in hours (RFC pattern) | -0800 |
X | Timezone offset in ISO format | -08; -0800; -08:00 |
Certaines lettres doivent être utilisées en différentes quantités pour obtenir différents résultats, par exemple pour le mois:
Type | Pattern | Example Output |
---|---|---|
Full Month | MMMM |
July |
Abbreviated Month | MMM |
Jul |
Numeric Month | MM |
07 |
Exemples
Regardons maintenant quelques exemples de différents formats de date et d’heure.
Pattern | Result |
---|---|
MM/dd/yyyy |
01/02/2018 |
dd-M-yyyy hh:mm:ss |
02-1-2018 06:07:59 |
dd MMMM yyyy |
02 January 2018 |
dd MMMM yyyy zzzz |
02 January 2018 India Standard Time |
E, dd MMM yyyy HH:mm:ss z |
Tue, 02 Jan 2018 18:07:59 IST |
En utilisant SimpleDateFormat()
Pour analyser une date, nous devons créer une instance de SimpleDateFormat
en utilisant le constructeur, puis utiliser la méthode format()
:
String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
Ce code produira » MM-dd-yyyy
« :
Output01-02-2018
Ce motif produit « mois dans l’année », « jour dans le mois » et « année ». Le type de caractère (et la capitalisation) et la quantité de caractères contribuent à la chaîne. Le mois serait représenté par deux chiffres, le jour par deux chiffres et l’année par quatre chiffres.
Ce code a affiché la date du « 2 janvier 2018″ comme » 01-02-2018
« .
Pour analyser l’heure, nous devons modifier le motif lors de la création de l’instance de SimpleDateFormat
.
String pattern = "HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
Ce code produira » HH:mm:ss.SSSZ
« :
Output13:03:15.454+0530
Ce motif produit « heures », « minutes », « secondes », « millisecondes » et « décalage de fuseau horaire en heures (motif RFC) ».
Ce code a affiché l’heure comme » 13:03:15.454+0530
« .
En utilisant parse()
Le parsing est la conversion d’une chaîne de caractères en une instance de java.util.Date
. Nous pouvons analyser une chaîne pour obtenir une instance de date en utilisant la méthode parse()
de la classe SimpleDateFormat. Pour analyser une chaîne en Date, nous avons besoin d’une instance de la classe SimpleDateFormat et d’un motif de chaîne en entrée pour le constructeur de la classe.
String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("12-01-2018");
System.out.println(date);
Cela produira une date (12-01-2018
) sans heure spécifiée :
OutputSat Dec 01 00:00:00 IST 2018
Maintenant, regardons un exemple avec SimpleDateFormat
pour analyser l’heure.
String pattern = "HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse("22:00:03");
System.out.println(date);
Cela produira une heure (22:00:03
) sans date spécifiée :
OutputThu Jan 01 22:00:03 IST 1970
Comme aucune date n’a été spécifiée, le programme considère l’époque comme la date (c’est-à-dire le 01-Jan-1970
).
Utilisation de Locale
Nous avons travaillé avec Locale
dans le cadre de DateFormat
et nous avons vu que les locales sont utilisées en fonction des régions.
String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, new Locale("fr", "FR"));
Date date = simpleDateFormat.format(new Date());
System.out.println(date);
Ce code va formater l’heure actuelle en français (fr
) et dans la région France (FR
) :
Outputmardi janvier 2018 14:51:02.354+0530
Le jour et le mois sont nommés en français en fonction de la Locale
fournie en entrée – mardi
signifie « mardi » et janvier
signifie « janvier ».
Conclusion
Dans cet article, vous avez appris sur SimpleDateFormat
et DateFormat
de Java.
Référence:
Source:
https://www.digitalocean.com/community/tutorials/java-simpledateformat-java-date-format