93 votes

Quels sont les formats de date disponibles dans la classe SimpleDateFormat ?

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.

163voto

Subhrajyoti Majumder Points 20001

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/PM
  • H - 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");

54voto

Roy Points 954

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 !

9voto

Basil Bourque Points 8938

Java.time

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.

Personnalisé

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 
    ) 
;

Norme ISO 8601

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".

Localisez

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.


À propos de java.time

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 ?

4voto

rinuthomaz Points 148

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.com

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.

Powered by:

X