Java SimpleDateFormat – Format de date Java

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 en String 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 comme 31-12-2017 mais la même chose sera écrite aux États-Unis d’Amérique comme 12-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) :

Output
3 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) :

Output
11: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 « :

Output
01-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 « :

Output
13: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 :

Output
Sat 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 :

Output
Thu 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) :

Output
mardi 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