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

Langage PHP Discussion :

[Dates] Formatage de date pour recherche


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 25
    Points : 16
    Points
    16
    Par défaut [Dates] Formatage de date pour recherche
    Bonjour,

    Malgré mes recherches sur le Net je n'ai rien trouvé.
    Je souhaiterais faire une recherche sur un ensemble de fichiers contenus dans un dossier.

    Le nom des fichiers est du type : N°Fichier-DateCreationFichier-TitreFichier.
    Exemple : 0028-12092006-Essai

    Par ailleur j'ai un formulaire où l'utilisateur saisi la période de création du fichier à rechercher (DateDebut et DateFin).

    Ce que je fais déja c'est :
    • Recuperer DateDebut et DateFin sous le format "jjmmaaaa"
    • Parcourir le dossier
    • Recuperer les noms des fichiers un à un
    • Isoler la DateCreationFichier

    Mon probleme c'est :
    Vérifier que DateDebut <= DateCreationFichier <= DateFin

    Merci.

  2. #2
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Salut,

    Va voir la fonction mktime() combiné avec date() de php qui te retourne une date!
    doc => ici

    Ensuite rien de plus simple que de comparer 2 dates en php!
    Si la connerie de certain fonctionnait au gazole il y aurait pénurie !!!!

    Lao Tzeu a dit : "Il faut trouver la voix"...Si tu ne l'as pas trouvé, je vais t'aider en te coupant la tête.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    J'ai longuement testé mktime() combiné à date(), mais ca ne semble pas resoudre mon probleme.
    En effet quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date1 = "01021990";
    echo date('d/m/Y', $date1);
    j'obtiens 12/01/1970 au lieu 01/02/1990

    J'expose mon probleme autrement.
    J'ai 2 dates: $date1 = "01021990" (c-a-d 01/02/1990) et $date2 = "02021990"

    Comment comparer les 2 dates ?

    Merci

  4. #4
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Mais c'est normal, que tu ai ca!

    Il ne faut passer une chaine brut!

    Tu extrais de ta chaine le jour, le mois et l'année et tu regardes mktime()!

    $jour= substr($ch,0,2);
    $mois = substr($ch,2,2);
    $annee = substr($ch,4,4);

    $date = date("m/d/Y",mktime(0,0,0,$mois,$jour,$annee));

    Tu ne veux tout de meme pas une fonction qui te fasses ton boulot????
    Tu n'as qu'a la faire

    LIS CORRECTEMENT LA DOC

    En ce qui concerne substr, je ne me souviens plus trop de la syntaxe! doc ici
    Si la connerie de certain fonctionnait au gazole il y aurait pénurie !!!!

    Lao Tzeu a dit : "Il faut trouver la voix"...Si tu ne l'as pas trouvé, je vais t'aider en te coupant la tête.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Alors je vais te donner une astuce qui vient des dates anglaise.

    Plutot que de recuperer jjmmaaaa recupere aaaammjj et tu veras que quelque soit le chiffre la tu peux tous les comparer sans traitement.

    exemple

    Le 05/08/2006 et le 05/07/2006

    on siat que le 05/07/2006 est inferieur a 05/08/2006 ce qui ne saute pas aux yeux apparement.

    maintenant concatene comme je te l'ai dis.
    Ca donne

    20060805 et 20060705 et la magique le deuxieme est inferieur au premier. juste en faisant une comparaison simple.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci de votre aide à tous,

    J'ai testé l'astuce de Zulot. Elle fonctionne très bien et est adaptée à mon probleme

    Mais auparavant j'ai testé la solution de Hug0_76 qui m'a beaucoup appris sur la combinaison de mktime()/date() . Cependant, j'aimerais poursuivre la discution, car j'ai constaté que :
    1. Le formatage de la date fonctionne parfaitement
    2. Parcontre il y a un probleme au niveau de la comparaison

    A cet effet j'ai créé la fonction suivante :
    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
    24
    25
    26
    27
    28
     
    function convertir($ch){
     
    $jour= substr($ch,0,2);
    $mois = substr($ch,2,2);
    $annee = substr($ch,4,4);
     
    return date("m/d/Y",mktime(0,0,0,$mois,$jour,$annee));
     
    }
     
    $dateDebut = convertir('01012000');
    $dateCreation = convertir('01021999');
    $dateFin = convertir('01032000');
     
    echo "Début : $dateDebut";
    echo "<br />";
    echo "Création : $dateCreation";
    echo "<br />";
    echo "Fin : $dateFin";
    echo "<br />";
     
     
    if ($dateCreation > $dateDebut){
    	 echo "Comparaison : $dateCreation > $dateDebut";
    }else{
    	 echo "Comparaison : $dateCreation < $dateDebut";
    }
    Voici le resultat obtenu :

    Début : 01/01/2000
    Création : 02/01/1999
    Fin : 03/01/2000
    Comparaison : 02/01/1999 > 01/01/2000


    Pourquoi j'ai 02/01/1999 > 01/01/2000 ?

    Merci

  7. #7
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut
    Salut,

    en effet c'est un gros problème!
    Euh est ce que tu as essayé de comparer les dates avec un tiret??
    13-09-2006 > 12-09-2006 ? => comparaison de deux chaines de caractères

    Mais sinon compare le resultat obtenu par le mktime.

    Sinon l'astuce de zulot et très futée car finalement j'ai tjs comparé deux dates au format anglo saxon 2006-09-12 < 2006-09-13 ce qui revient à comparer 20060912 < 20060913 .... !

    mktime donne le nbr de seconde depuis le 1er janvier 1970 alors tant que tu est après cette date ya pas de pb, tu compares le resultat du mktime sinon tu appliques l'opposé !
    Si la connerie de certain fonctionnait au gazole il y aurait pénurie !!!!

    Lao Tzeu a dit : "Il faut trouver la voix"...Si tu ne l'as pas trouvé, je vais t'aider en te coupant la tête.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    oups j'avais pas tout lu dsl

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

Discussions similaires

  1. [Débutant] Formatage de date pour DateTimePicker
    Par stujava dans le forum C#
    Réponses: 4
    Dernier message: 20/04/2012, 15h01
  2. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  3. [Formulaire] Problème pour recherche de date
    Par Domingo60 dans le forum ASP
    Réponses: 2
    Dernier message: 23/04/2007, 11h48
  4. Réponses: 2
    Dernier message: 28/02/2007, 13h13
  5. [tomcat] Formatage de date en FR
    Par PeteMitchell dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 10/05/2004, 11h41

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