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] Conversion d'un string en date


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 39
    Par défaut [Dates] Conversion d'un string en date
    Bonjour,

    J'ai une variable de type DATE. Par le biais d'un formulaire, l'utilisateur entre la date dans ce format 'jj-mm-aaaa'. J'utilise ensuite la fonction explode() de PHP pour pouvoir mettre la date dans le format de MySQL. Le problème est que ces dates sont devenues des String et j'aimerais comparer ensuite deux dates, mais cela devient une comparaison de chaines de caracteres. Comment dois-je procéder ?

    Merci de vos réponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $date_c = explode("-", $date_c);
    		$date_p = explode("-", $date_p);
    		$date_a = explode("-", $date_a);
    		$date_da = explode("-", $date_da);
     
    		$date_c = $date_c[2].'-'.$date_c[1].'-'.$date_c[0];
    		$date_p = $date_p[2].'-'.$date_p[1].'-'.$date_p[0];
    		$date_a = $date_a[2].'-'.$date_a[1].'-'.$date_a[0];
    		$date_da = $date_da[2].'-'.$date_da[1].'-'.$date_da[0];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($date_a) and isset($date_p) and $date_a != "jj-mm-aaaa" and $date_p != "jj-mm-aaaa" and $date_a < $date_p) ...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    jouer avec les timestamp UNIX, plutôt qu'avec les dates.

    Code date.php : 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
    <?php
     
      $aDate = '31-01-2008';
      $bDate = '09-02-2008';
      $cDate = '11-02-2008'; 
      $dDate = '11-02-2008';      
     
      list($jj, $mm, $aaaa) = explode('-', $aDate);
      $aUnix = mktime(0, 0, 0, $mm, $jj, $aaaa);
      $aDate = date('Y-m-d', $aUnix);
     
      list($jj, $mm, $aaaa) = explode('-', $bDate);
      $bUnix = mktime(0, 0, 0, $mm, $jj, $aaaa);
      $bDate = date('Y-m-d', $bUnix);
     
      list($jj, $mm, $aaaa) = explode('-', $cDate);
      $cUnix = mktime(0, 0, 0, $mm, $jj, $aaaa);
      $cDate = date('Y-m-d', $cUnix);      
     
      list($jj, $mm, $aaaa) = explode('-', $dDate);
      $dUnix = mktime(0, 0, 0, $mm, $jj, $aaaa);
      $dDate = date('Y-m-d', $dUnix);      
     
      if ($aUnix < $dUnix) echo 'test';   
     
    ?>

    Cordialement,
    DaRiaN.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 39
    Par défaut
    J'ai adapté votre code au mien et ça donne ça :
    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
     
    list($jj, $mm, $aaaa) = explode ('-',$date_c);
    $Unix_date_c = mktime(0, 0, 0, $mm, $jj, $aaaa);
    $date_c = date('Y-m-d', $Unix_date_c);
     
    list($jj, $mm, $aaaa) = explode ('-',$date_a);
    $Unix_date_a = mktime(0, 0, 0, $mm, $jj, $aaaa);
    $date_a = date('Y-m-d', $Unix_date_a);
     
    list($jj, $mm, $aaaa) = explode ('-',$date_p);
    $Unix_date_p = mktime(0, 0, 0, $mm, $jj, $aaaa);
    $date_p = date('Y-m-d', $Unix_date_p);
     
    list($jj, $mm, $aaaa) = explode ('-',$date_da);
    $Unix_date_da = mktime(0, 0, 0, $mm, $jj, $aaaa);
    $date_da = date('Y-m-d', $Unix_date_da);
    Voilà les comparaisons que je fais par la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (isset($date_a) and isset($date_p) and $date_a < $date_p)
    {
    		echo "La date d'acquisition est inférieure à la date de première mise en circulation <br/>" ;
    	}
    	if (isset($date_c) and isset($date_p) and $date_c < $date_p)
    	{
    		echo "La date du dernier contrôle technique est inférieure &#224 la date de première mise en circulation <br/>" ;
    	}
    	if (isset($date_da) and isset($date_p) and $date_da < $date_p)
    	{
    		echo "La date de début de l'assurance est inférieure à la date de premi&#232re mise en circulation <br/>" ;
            }
    J'ai l'impression que le programme ne compare que les jours. Si je mets $date_p = 14-05-2007 et $date_c = 13-06-2007. Il répond que $date_c est inférieur à $date_p.

    Merci de votre aide.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Les $aDate c'est juste pour MySQL (transformation 31-01-2008 en 2008-01-31), si vous voulez comparer des dates entre elles, c'est les $aUnix qu'il faut utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($aUnix > $bUnix) echo 'ce que vous voulez';

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    On peut tout à fait comparer les dates au format SQL (aaaa-mm-jj) directement , ce format est d'ailleur fait pour ca (année en premier, puis mois, puis jour.

    Sinon tu peut simplifier ta transformation de date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $date_c = explode("-", $date_c);
    $date_p = explode("-", $date_p);
    $date_a = explode("-", $date_a);
    $date_da = explode("-", $date_da);
     
    $date_c = $date_c[2].'-'.$date_c[1].'-'.$date_c[0];
    $date_p = $date_p[2].'-'.$date_p[1].'-'.$date_p[0];
    $date_a = $date_a[2].'-'.$date_a[1].'-'.$date_a[0];
    $date_da = $date_da[2].'-'.$date_da[1].'-'.$date_da[0];
    Peut se simplifier en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $date_c = implode("-",array_reverse(explode("-", $date_c)));
    $date_p = implode("-",array_reverse(explode("-", $date_p)));
    $date_a = implode("-",array_reverse(explode("-", $date_a)));
    $date_da = implode("-",array_reverse(explode("-", $date_da)));

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Par défaut
    C'est d'ailleur un format ISO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '2008-12-31' > '2008-02-01' > '2007-12-31'

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

Discussions similaires

  1. Conversion d'un String en Date
    Par Kasko dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 15/03/2015, 00h26
  2. [2008] Conversion d'un string en date dans une clause WHERE
    Par Florian54 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 30/05/2014, 16h04
  3. Conversion d'un string en date
    Par souhail72 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 07/11/2013, 11h08
  4. Conversion d'un string en date : 12/14 en 01/12/2014
    Par souhail72 dans le forum Développement de jobs
    Réponses: 16
    Dernier message: 30/10/2013, 08h12
  5. Conversion d'une String en Date
    Par NFHnv dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 08/02/2013, 16h41

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