IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

L'exception sur les dates


Sujet :

Android

  1. #1
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut L'exception sur les dates
    Bonjour,

    Supposons que j'ai une date date1 comme la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String date1 = "2013-20-01";
    Pour régler l'exception sur le mois, existe-il une bibliothèque prête à utiliser (.jar) ou je dois la gérer moi-même ?

    Merci beaucoup.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    De quoi parles-tu ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Je vous explique, alors j'ai mis comme mois : 20. Ce qui n'existe pas. En effet, ça m'affiche : Donc l'exception n'a pas été traitée.

    Là je dois la gérer donc. Je me demande si je dois la gérer manuellement ou existe-il une bibliothèque qui gère ça ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    La classe Calendar le fait il me semble... (lenient)
    Le parsing de SimpleDateFormat aussi si mes souvenirs sont bons

    Question #1... pourquoi avoir une date en string ? d'ou vient elle ?
    Question #2... quel est le code qui transforme "2013-20-01" en "2014-08-01" ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Question #1... pourquoi avoir une date en string ? d'ou vient elle ?
    D'un Web Service, je dois la parser avec JSON. Du coup elle est String.

    Citation Envoyé par nicroman Voir le message
    Question #2... quel est le code qui transforme "2013-20-01" en "2014-08-01" ?
    ça se fait tout seul une fois que vous faites la conversion du String à Date.

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Dans tes objets Date, tu dois spécifier une locale... ou utiliser une Locale par défaut prenant ça en compte car "2013-20-01" est une date tout à fait valable pouvant représenter le 20 janvier 2013.

    A mon sens, la seule chose que tu puisses faire avec ça, c'est une vérification manuelle du second nombre, celui-ci ne devant pas être plus grand que 12.
    Ensuite un SimpleDateFormat avec un masque yyyy-MM-dd... mais c'est vrai qu'il ne m'est jamais venu à l'idée de tester avec des dates incorrectes.

    HS : essaye de donner toutes les infos de ton problème, c'est usant de tirer les vers du nez de quelqu'un alors qu'on essaye d'aider.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Merci beaucoup pour votre réponse.

    Voilà en gros ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	String mois;
    		String date1 = "2013-20-01";
     
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     
    		try {			
    			Date date11 = sdf.parse(date1); 
    			String mois = date1.substring(5, 7);
    			System.out.println("Le mois est : " +mois);
     
    			int i = Integer.parseInt(mois); 			
     
    			if ((i>0) && (i<13)){
    	        	 System.out.println("Le mois "+i+ " est validé");
    	        }
    	        else
    	        	 System.out.println("Le mois "+i+ " n'existe pas");
    		}
            catch (ParseException e) {
    			e.printStackTrace();
    		}	
    		}
    ça donne dans la Console :

    Le mois est : 20
    Le mois 20 n'existe pas
    ça marche "manuellement". Là je me demande s'il y a une bibliothèque qui gère cette exception afin que je l'utilise ^^'

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Une exception de type ParseException sera levée si la date n'est pas conforme lorsque tu essaie de la parser.

    Elle existe tout en bas de ton code mais tu ne l'utilises pas...

  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut passer le DateFormat en mode non-lenient (comme l'a indiqué nicroman un peu plus haut) :
    Cela génèrera une exception si la date est incorrect !
    Alors que par défaut en mode "lenient" le DateFormat va tenter de "corriger" la date (ex 31-sept devient le 01-oct, etc.).



    Attention également à bien lire toute la chaine.
    En effet par défaut parse(String) s'arrête dès qu'il a trouver ce qu'il cherchait.

    Ainsi dans ton cas la chaine "2013-02-01-23" sera converti en 2013-02-01 et le "-23" supplémentaire sera ignoré.
    Si tu veux une exception dans ce cas là, il faut utiliser parse(String,ParsePosition) et vérifié que l'index du ParsePosition après le parse() correspondent bien à la taille de la chaine...


    a++

  10. #10
    Membre averti
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    ça m'a énormément aidé !

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent à TRUNC ou ROUND d'Oracle sur les Dates ?
    Par swirtel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/05/2005, 09h45
  2. operation sur les dates
    Par elendil dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/04/2005, 12h14
  3. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14
  4. MS Access et TQuery (probleme sur les dates)
    Par Djob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 14h57
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo