SimpleDateFormat est une classe pour résoudre notre problème de format d'heure.
SimpleDateFormat est une classe concrète pour formater et analyser les dates en fonction des paramètres régionaux. Il permet le formatage (date->texte), l'analyse (texte->date) et la normalisation. SimpleDateFormat permet la sélection de n’importe quel modèle de format date-heure défini par l’utilisateur.
Modèles de date et d'heure Les formats de date et d'heure sont spécifiés par des chaînes de modèles de date et d'heure. Dans les chaînes de modèles de date et d'heure, les lettres non citées « A » à « Z » et « a » à « z » sont interprétées comme des lettres de modèle et sont utilisées pour représenter des éléments de chaîne de date ou d'heure. Le texte peut être placé entre guillemets simples (') pour éviter toute interprétation. "''" représente un guillemet simple. Tous les autres caractères ne sont pas interprétés ; ils sont simplement copiés dans la chaîne de sortie lors du formatage, ou comparés à la chaîne d'entrée lors de l'analyse.
Les lettres de modèle suivantes sont définies (tous les autres caractères « A » à « Z » et « a » à « z » sont réservés) :
Exemple de représentation d'un élément de date ou d'heure de lettre
G Identifiant d’ère Texte AD
Année et Année 1996 ;
M mois de l'année Mois juillet ;
w Nombre de semaines dans l'année Numéro 27
W Nombre de semaines dans le mois Numéro 2
D Nombre de jours dans l'année Nombre 189
d Nombre de jours dans le mois Nombre 10
F Semaine du mois Numéro 2
E Jour de la semaine Texte mardi ;
a Am/pm Marqueur Texte PM
H Heure de la journée (0-23) Numéro 0
k Heure de la journée (1-24) Numéro 24
Nombre d'heures en K am/pm (0-11) Nombre 0
h Heure en am/pm (1-12) Numéro 12
m Nombre de minutes dans une heure Nombre 30
s Secondes en minutes Numéro 55
S Nombre de millisecondes Nombre 978
z Fuseau horaire Fuseau horaire général Heure standard du Pacifique ; GMT-08:00 ;
Fuseau horaire Z Fuseau horaire RFC 822 -0800
L'exemple suivant montre comment interpréter les modèles de date et d'heure dans les paramètres régionaux américains. La date et l'heure indiquées sont le 04/07/2001 à 12:08:56, heure locale du fuseau horaire du Pacifique aux États-Unis.
Résultats du modèle de date et d'heure
"aaaa.MM.jj G 'à' HH:mm:ss z" 2001.07.04 AD à 12:08:56 PDT
"EEE, MMM j, "aa" mercredi 4 juillet 2001
"h:mm a" 12h08
"hh 'o''clock' a, zzzz" 12 heures PM, heure avancée du Pacifique
"K: mm a, z" 00:08, PDT
"aaaaa.MMMMM.jj GGG hh: mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM aaaa HH:mm:ss Z" Mer. 4 juillet 2001 12:08:56 -0700
"aaMMjjHHmmssZ" 010704120856-0700
"aaaa-MM-jj'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
Exemples d'application pratique de SimpleDateFormat en programmation :
(1) Formatage (Date->Texte)
Généralement, la date et l'heure couramment utilisées en chinois sont : 20070719 20:29:30.
SimpleDateFormat formater = new SimpleDateFormat("aaaaMMjj hh:mm:ss");
System.out.println("Date en chaîne "+formater.format(new Date()));
Les formes courantes similaires incluent aaMMjj hh:mm:ss aaaa-MM-jj hh:mm:ss jj-MM-aaaa hh:mm:ss
Mais il convient de noter que ce format (19JUL07) et ses formes similaires ont un petit truc 19JUL07
Formateur SimpleDateFormat = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("Date en chaîne "+formater.format(new Date()).toUpperCase());
Puisqu'il est en anglais, le paramètre d'objet Locale doit être utilisé, sinon le Locale local par défaut est utilisé.
(2) Analyse (Texte->Date)
De manière générale, vous pouvez utiliser n'importe quelle forme de mode date et heure et les paramètres de texte pour obtenir l'heure dans le format souhaité. Par exemple, 2007-7-19 renverra un objet heure de type java.util.Date et les heures. , les minutes et les secondes seront remplies de 0.
formater = new SimpleDateFormat("aaaaMMMMjj",new Locale("US"));
essayer...{
System.out.println("Chaîne à ce jour "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
En particulier,
formater = new SimpleDateFormat("aaaaMMMMjj",new Locale("US"));
essayer...{
System.out.println("Chaîne à ce jour "+formater.parse("2007sep01"));
} catch (ParseException e) ...{
e.printStackTrace();
}
Il renvoie également un objet date de type java.util.Date, avec des heures, des minutes et des secondes complétées par des 0.
(3) Texte -> Horodatage, Date -> Horodatage
Horodatage t ;
Format SimpleDateFormat = new SimpleDateFormat("aaaa-MM-jj hh:mm:ss");
essayer...{
t = new Timestamp(format.parse("2007-07-19 00:00:00").getTime());
} catch (ParseException e) ...{
e.printStackTrace();
}
Horodatage t ;
Format SimpleDateFormat = new SimpleDateFormat("aaaa-MM-jj hh:mm:ss");
t = nouvel horodatage (nouvelle date (). getTime