Quelqu'un peut-il me renseigner sur les formats de date disponibles dans la classe SimpleDateFormat ?
J'ai parcouru l'API mais je n'ai pas trouvé de réponse satisfaisante. Toute aide est la bienvenue.
Quelqu'un peut-il me renseigner sur les formats de date disponibles dans la classe SimpleDateFormat ?
J'ai parcouru l'API mais je n'ai pas trouvé de réponse satisfaisante. Toute aide est la bienvenue.
Les formats de date et d'heure sont bien décrits ci-dessous
SimpleDateFormat (Java Platform SE 7) - Modèles de date et d'heure
Il pourrait y avoir n
Nombre de formats que vous pouvez réaliser. ex - dd/MM/yyyy
o YYYY-'W'ww-u
ou vous pouvez mélanger et assortir les lettres pour obtenir le motif que vous souhaitez. Les lettres du motif sont les suivantes.
G
- Indicateur d'époque (AD)y
- Année (1996 ; 96)Y
- Semaine Année (2009 ; 09)M
- Mois de l'année (juillet ; Jul ; 07)w
- Semaine dans l'année (27)W
- Semaine dans le mois (2)D
- Jour de l'année (189)d
- Jour du mois (10)F
- Jour de la semaine dans le mois (2)E
- Nom du jour dans la semaine (mardi ; mar)u
- Numéro du jour de la semaine (1 = lundi, ..., 7 = dimanche)a
- Marqueur AM/PMH
- Heure de la journée (0-23)k
- Heure de la journée (1-24)K
- Heure en am/pm (0-11)h
- Heure en am/pm (1-12)m
- Minute dans l'heure (30)s
- Deuxième en minute (55)S
- Milliseconde (978)z
- Fuseau horaire général (Pacific Standard Time ; PST ; GMT-08:00)Z
- Fuseau horaire RFC 822 (-0800)X
- Fuseau horaire ISO 8601 (-08 ; -0800 ; -08:00)Pour analyser :
2000-01-23T04:56:07.000+0000
Utilisez : new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Laissez-moi vous donner un exemple de code que j'ai obtenu à partir de http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html Vous pouvez ensuite jouer avec différentes options jusqu'à ce que vous compreniez.
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date now = new Date();
//This is just Date's toString method and doesn't involve SimpleDateFormat
System.out.println("toString(): " + now); // dow mon dd hh:mm:ss zzz yyyy
//Shows "Mon Oct 08 08:17:06 EDT 2012"
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
System.out.println("Format 1: " + dateFormatter.format(now));
// Shows "Mon, 2012-10-8 at 8:17:6 AM EDT"
dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Format 2: " + dateFormatter.format(now));
// Shows "Mon 2012.10.08 at 08:17:06 AM EDT"
dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
System.out.println("Format 3: " + dateFormatter.format(now));
// Shows "Monday, October 8, 2012"
// SimpleDateFormat can be used to control the date/time display format:
// E (day of week): 3E or fewer (in text xxx), >3E (in full text)
// M (month): M (in number), MM (in number with leading zero)
// 3M: (in text xxx), >3M: (in full text full)
// h (hour): h, hh (with leading zero)
// m (minute)
// s (second)
// a (AM/PM)
// H (hour in 0 to 23)
// z (time zone)
// (there may be more listed under the API - I didn't check)
}
}
Bonne chance !
UPDATE
Les autres questions sont dépassées. Les terribles classes héritées telles que SimpleDateFormat
ont été supplantés il y a des années par le système moderne java.time classes.
Pour définir vos propres modèles de mise en forme personnalisés, les codes de la rubrique DateTimeFormatter
sont similaires mais pas exactement les mêmes que les codes dans SimpleDateFormat
. Veillez à étudier la documentation. Et cherchez dans Stack Overflow de nombreux exemples.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
En ISO 8601 définit des formats pour de nombreux types de valeurs de date et d'heure. Ces formats sont conçus pour l'échange de données et peuvent être facilement analysés par des machines et lus par des personnes de cultures différentes.
En java.time Les classes utilisent les formats ISO 8601 par défaut lors de la génération/analyse des chaînes de caractères. Il suffit d'appeler l'option toString
& parse
méthodes. Il n'est pas nécessaire de spécifier un modèle de formatage.
Instant.now().toString()
2018-11-05T18:19:33.017554Z
Pour une valeur en UTC, le Z
à la fin signifie UTC, et se prononce "Zulu".
Plutôt que de spécifier un modèle de formatage, vous pouvez laisser l'option java.time localiser automatiquement pour vous. Utilisez le DateTimeFormatter.ofLocalized…
méthodes.
Obtenez le moment présent avec l'heure d'horloge murale utilisée par les habitants d'une région particulière (un fuseau horaire).
ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );
Générer un texte au format standard ISO 8601 judicieusement étendu pour ajouter le nom du fuseau horaire entre crochets.
zdt.toString() : 2018-11-05T19:20:23.765293+01:00[Africa/Tunis]
Générer un texte auto-localisé.
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
output: lundi 5 novembre 2018 à 19:20:23 heure normale d’Europe centrale
Il est généralement préférable de procéder à une auto-localisation plutôt que de s'embêter avec des modèles de formatage codés en dur.
En java.time est intégré à Java 8 et aux versions ultérieures. Ces classes remplacent les anciennes classes héritage les classes de date et d'heure telles que java.util.Date
, Calendar
, & SimpleDateFormat
.
Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez sur Stack Overflow de nombreux exemples et explications. La spécification est JSR 310 .
En Joda-Time Le projet, actuellement en mode de maintenance conseille de migrer vers le java.time classes.
Vous pouvez échanger java.time directement avec votre base de données. Utilisez un Pilote JDBC conforme à JDBC 4.2 ou plus tard. Pas besoin de ficelles, pas besoin de java.sql.*
classes. Support de Hibernate 5 et JPA 2.2 java.time .
Où obtenir les classes java.time ?
Vérifiez les formats ici http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
principal
System.out.println("date : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));
méthode
public String getMyDate(String myDate, String returnFormat, String myFormat)
{
DateFormat dateFormat = new SimpleDateFormat(returnFormat);
Date date=null;
String returnValue="";
try {
date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
returnValue = dateFormat.format(date);
} catch (ParseException e) {
returnValue= myDate;
System.out.println("failed");
e.printStackTrace();
}
return returnValue;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.