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 :

Problème de comparaison : date.compareto(date)


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut Problème de comparaison : date.compareto(date)
    Bonjour a tous,

    J'utilise util.Date pour les manipulation de date.
    Donc je récupère toute les date de ma base sql au format String yyyy-mm-dd

    ensuite je crée toute mes nouvelles date : new Date(int yyyy,int mm,int dd) avec un beau parseint(String)

    et pour finir je récupère la date actuelle par Calendar.getInstance().getTime()

    et donc ensuite je compare toute mes date a la date actuelle pour savoir si elle sont passé en cours ou a venir mais je ne comprend pas pourquoi toute les comparaison donne le meme resultat alors que j'ai des date avant et apres l'actuelle.

    Donc si quelqu'un a une idée sur une erreur possible

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 627
    Par défaut
    Je viens de faire un println sur une New Date et si on met 0 comme année la date est à 1900.

    Peut être que ton problème vient de là.

    Tu devrais essayer de trouver une méthode plus rapide pour passer de ta base de donnée à une Date.

  3. #3
    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
    Passer par un DateFormat pour avoir la date ?

    Sinon, vérifie bien ton Integer.parseString(); je pense qu'il ne te renvoi pas ce que tu attends.
    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

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Je pense que Date compte a partir de 1900
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

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

  5. #5
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    alors pour la date a 1900, je vous rassure toute les dates que je récupère sont de cette année, les seul date particulière que la base me renvoi peuvent être a 9999 pour l'année mais je les tests pour ne pas les utilisé.

    Par contre je vais tester desuite les parseInt

  6. #6
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    non je confirme les parseInt me renvoi bien la bonne valeur.

  7. #7
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    Bon j'ai ciblé le problème mais pas resolu.

    Maintenent je recupere la date du jour comme ceci : new Date(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));

    avec ceci les valeur sont presque correct sauf le mois qui a un recul de 1 , car il m'affiche fevrier au lieu de mars

    j'ai esseyer avec un gregorianCalendar et un simple calendar rien ne change.. toujours 1 mois de recul et pour lorsque je navigue dans l'emulateur android la date est a jour.

  8. #8
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 627
    Par défaut
    Ouais ben Janvier c'est 0, Février c'est 1.

  9. #9
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    mdr oki , donc je doit juste faire un -1 sur le mois des date que je recupere de la base de donnée en fait

  10. #10
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    Bon ba c'etait bien ca , mais alors je ne comprend pas pourquoi seulement les mois sont gérer dans un simple tableau, alors que les jours eu sont bien a partir de 1... m'enfin merci d'avoir reglé mon souci ;-)

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Par défaut hello
    salut ,
    je cherche moi aussi a comparer des dates d'une base à la date du jour !!
    tu pourrais poster ton code pour voir
    je pourrai m'en inspirer !!

  12. #12
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    Hum, je sans de la flemme dans ta demande je me trompe ?

    Je te post ma comparaison mais il y a rien d’exceptionnel que tu n'aurai pu trouver tous seul je pense ;-).

    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
    23
     
    public int dateCompare(String _dateS,String _dateE){
    		String[] sDatetab = _dateS.split("-");
    		String[] eDatetab = _dateE.split("-");
    		Date sDate = new Date(Integer.parseInt(sDatetab[0]), Integer.parseInt(sDatetab[1])-1,Integer.parseInt(sDatetab[2]));
    		Date eDate;
    		if(Integer.parseInt(eDatetab[0])!=9999){
    			eDate = new Date(Integer.parseInt(eDatetab[0]), Integer.parseInt(eDatetab[1])-1,Integer.parseInt(eDatetab[2]));
    		}else{
    			eDate = new Date(0, 0,0);
    		}
    		Date currDate = new Date(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    		int ret=10;
     
    		if(sDate.compareTo(currDate)<0){//is start date is past
    			ret=1;
    		}else if(eDate.getYear()!=0 && currDate.compareTo(eDate)<0){//is today
    			ret =0;
    		}else{//not past
    			ret = -1;
    		}
    		return ret;
    	}

  13. #13
    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
    Non... mais loin de moi l'idée de vous faire tout changer.... mais ne serait-ce pas plus simple de laisser le parsing aux classes dédiées ?

    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
     
    public int compareDates(Date d1, Date d2)
    {
        if (d1 == null) return (d2 == null) ? 0 : -1;
        if (d2 == null) return 1;
        return (d1.before(d2)) ? -1 :  ((d1.after(d2)) ? 1 : 0);
    }
     
    public int compareDates(String ds1, String ds2, String fmt) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat(fmt);
        Date d1 = (ds1 == null || ds1.length() == 0) ? null : sdf.parse(ds1);
        Date d2 = (ds2 == null || ds2.length() == 0) ? null : sdf.parse(ds2);
        return compareDates(d1,d2);
    } 
    public int compareDates(String ds1, String ds2) throws ParseException
    {
        return compareDates(ds1,ds2,"YYYY-MM-DD");
    }

  14. #14
    Membre confirmé
    Homme Profil pro
    etudiant / developpeur
    Inscrit en
    Décembre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : etudiant / developpeur

    Informations forums :
    Inscription : Décembre 2009
    Messages : 131
    Par défaut
    J'ai faite ma fonction pour repondre a un petit besoin dans une petite appli perso c'est surment pour ca que ma fonction parse made in moi XD

    Mais j'avou que la votre est beaucoup plus propre et doit se faire ainsi.

    (ps: vive la surcharge de fonction !)

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

Discussions similaires

  1. Problème de comparaison de deux dates dans une requête
    Par amira88 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/12/2010, 10h02
  2. Problème sur comparaison de date
    Par Nixar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/12/2007, 10h19
  3. [Calendar] Problème de comparaison de 2 dates
    Par Core8 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 26/12/2006, 19h00
  4. Problème de comparaison de dates
    Par griese dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2006, 17h35
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 22h43

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