46 votes

Comment obtenir le format de chaîne de date donné (modèle) en java?

Je veux obtenir le format d’une chaîne de date donnée.

Exemple : J’ai une chaîne comme et le format de date de cette chaîne est .

Ici, je veux connaître ce format de date lorsque je passe string( ) à une méthode qui renverra le format( ), puis plus tard je formaterai ma chaîne de date donnée en fonction de mes exigences( `` ).

Quelqu’un peut-il me dire comment puis-je y parvenir?

59voto

Madhu Points 554
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NewClass {

    private static final String[] formats = { 
                "yyyy-MM-dd'T'HH:mm:ss'Z'",   "yyyy-MM-dd'T'HH:mm:ssZ",
                "yyyy-MM-dd'T'HH:mm:ss",      "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
                "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd HH:mm:ss", 
                "MM/dd/yyyy HH:mm:ss",        "MM/dd/yyyy'T'HH:mm:ss.SSS'Z'", 
                "MM/dd/yyyy'T'HH:mm:ss.SSSZ", "MM/dd/yyyy'T'HH:mm:ss.SSS", 
                "MM/dd/yyyy'T'HH:mm:ssZ",     "MM/dd/yyyy'T'HH:mm:ss", 
                "yyyy:MM:dd HH:mm:ss",        "yyyyMMdd", };

        /*
         * @param args
         */
    public static void main(String[] args) {
        String yyyyMMdd = "20110917";   
        parse(yyyyMMdd);
    }

    public static void parse(String d) {
        if (d != null) {
            for (String parse : formats) {
                SimpleDateFormat sdf = new SimpleDateFormat(parse);
                try {
                    sdf.parse(d);
                    System.out.println("Printing the value of " + parse);
                } catch (ParseException e) {

                }
            }
        }
    }
}

3voto

Piotr Gwiazda Points 5208

Je pense que vous devriez essayer d’analyser la chaîne d’entrée avec des modèles prédéfinis. Celui qui fonctionne est celui dont vous avez besoin. Rappelez-vous que certains modèles sont assez délicats.

01.12.12 est le 01 décembre 2012 en Europe mais le 12 janvier 2012 aux États-Unis. Ce pourrait être le 12 décembre 2001 aussi.

2voto

michael667 Points 2703

Si je vous comprends bien, vous voulez analyser des chaînes arbitraires (c’est-à-dire des chaînes d’un format que vous ne connaissez pas) en tant que dates en utilisant ? Ensuite, vous devez faire face à des questions telles que la façon de gérer (2 janvier 2003? 1 février 2003? etc.)

Vous devez savoir au moins quelque chose sur le format attendu, comme un choix de plusieurs formats prédéfinis pour votre entrée.

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