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

JavaScript Discussion :

tri des dates format jj/MM/année


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut tri des dates format jj/MM/année
    Bonjour,
    j'ai probleme dans la fonction suivante, apparament elle fait pas le tri correctement :elle compare les jours , aprés les mois et enfin les années.
    voila focntion:
    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
    function ts_sort_date(a,b) {
     
        aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
        bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
        if (aa.length == 10) {
            dt1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);
        } else {
            yr = aa.substr(6,2);
            if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; }
            dt1 = yr+aa.substr(3,2)+aa.substr(0,2);
        }
        if (bb.length == 10) {
            dt2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);
        } else {
            yr = bb.substr(6,2);
            if (parseInt(yr) < 50) { yr = '20'+yr; } else { yr = '19'+yr; }
            dt2 = yr+bb.substr(3,2)+bb.substr(0,2);
        }
        if (dt1==dt2) return 0;
        if (dt1<dt2) return -1;
        return 1;
    }
    j'utilise comme expression reguliére /^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par jacksparo Voir le message
    apparament elle fait pas le tri correctement :elle compare les jours , aprés les mois et enfin les années.
    Je ne me suis pas trop plongée dans le code, parce qu'il est un peu illisible (d'ailleurs, pense à la balise [code], merci), mais:
    - si tu cherches à trier des dates, il faut bien évidemment comparer d'abord les années, puis les mois, puis les jours
    - la comparaison de chaînes de caractères se fait par les méthodes equals et compareTo (et non "==" ou "<")


    Ceci dit, plutôt que de réinventer la roue, je te propose une autre approche à ce problème:
    - transformer tes chaînes de caractère en Date avec la méthode parse de la classe DateFormat
    - comparer simplement les dates avec la méthode compareTo de la classe Date


    EDIT : c'est pas malin de poster dans le forum Java pour du Javascript, hein

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Un petit détail à connaître :
    Tu peux simplifier ta regexp en mettant en facteur les caractères répétés.
    Exemple : une expression comportant uniquement 4 chiffres pourrait s'écrire
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    /^\d\d\d\d$/
    , mais plus simplement :
    De plus, si tu veux autoriser le caractère "-" comme séparateur, il faut l'échapper quand tu le mentionnes entre les crochets, comme tu as fait pour le caractère "/".

    Enfin, attention : ta regexp va accepter des dates au format "01/09-2008", c'est-à-dire des séparateurs non-identiques... ce n'est peut-être pas un problème, à toi de voir... ? (au cas où ça te gêne, utilise "\1" pour désigner le même contenu que celui décrit dans la première paranthèse de la regexp, voir exemple final)

    Pour ton expression complète, en prenant en compte ces 3 remarques, ça donnerait quelque chose comme :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // expression contenant uniquement : 2 chiffres, puis un séparateur "/" ou "-", 2 autres chiffres, le même séparateur que le premier employé, et enfin 4 chiffres
    /^\d{2}([\/\-])\d{2}\1\d{4}$/

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Un petit tour sur la FAQ ???

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    vi , derrière il ne reste plus qu'a créer la méthode de trie

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    un split revers join ... suivi d'un sort et c'est fini ...

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    c résolu , il y'avait un probleme d'espace sur le format date donc fait pas appel a la focntion sort_date.

    Merci a vous tous

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

Discussions similaires

  1. Comparer des dates sans utiliser les années
    Par maireg dans le forum Requêtes
    Réponses: 12
    Dernier message: 10/05/2011, 23h49
  2. Tri des dates
    Par AJ_ing dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/02/2011, 14h45
  3. trié des date avec une boucle for each
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/09/2009, 11h00
  4. Datagridview - Tri de date (format string)
    Par Chris@Xerox dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/03/2009, 13h34
  5. tri des dates par semaine
    Par syldudu dans le forum Access
    Réponses: 17
    Dernier message: 10/10/2006, 11h27

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