[PHP] comparer 2 dates

bazzouz Messages postés 442 Statut Membre -  
okuni Messages postés 1325 Statut Membre -
Bonjour,

comment faire pour savoir si la différence entre 2 dates est inférieur à 12 heures, 1ère date : date courante (time()), 2 ème date chargé depuis un fichier et stocké sous le même format que time() ...

Merci d'avance

5 réponses

  1. okuni Messages postés 1325 Statut Membre 126
     
    Bonjour,
    Puisque tu as 2 timestamp, c'est facile.
    Si tu fais la différence des 2 dates, tu auras le temps en secondes entre ces 2 dates.
    Ensuite tu calcul combien de secondes il y a dans 12h.
    1
  2. Leviathan49 Messages postés 267 Statut Membre 70
     
    Si la date est dans un format du genre "15/10/2010 12:56:22"
    Tu dois :
    - récupérer chaque champ de ta date, avec une expression regulière par ex:
    preg_match("#([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#",$str,$matches);
    ou des explode bien placés (http://php.net/manual/fr/function.explode.php)
    - tu retrouve le timestamp avec mktime (https://www.php.net/manual/fr/function.mktime.php ex:
    mktime($matches[4],$matches[5],$matches[6],$matches[2],$matches[1],$matches[3]);
    Attention au format demandé par mktime(heure,min,sec,mois,jour,année)
    1
  3. bazzouz Messages postés 442 Statut Membre 81
     
    Ok, mais, la 2 ème date est chargé depuis un fichier texte donc sera de type chaine de caractère et pas timestamp, comment faire la convertion ?

    Merci
    0
    1. okuni Messages postés 1325 Statut Membre 126
       
      fait ceci :
      $time = (int) $timestamp

      mais je pense pas que ça change quelque chose.
      si tu fais directement la différence, php comprendra que ce sont 2 nombres.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. bazzouz Messages postés 442 Statut Membre 81
     
    Merci à vous, je vais essayer cette méthode cet aprés midi ;)
    0
    1. okuni Messages postés 1325 Statut Membre 126
       
      mais tu as dis que ta date enregistré étant du même format que time() donc format unix.
      exemple : 12546879 et pas une date comme "15/10/2010 12:56:22"

      Exacte ?
      0
    2. bazzouz Messages postés 442 Statut Membre 81
       
      Oui exacte, je l'ai stocké sous format UNIX pour faciliter la comparaison ;)
      0
    3. Leviathan49 Messages postés 267 Statut Membre 70
       
      Ah dans ce cas aucun problème de conversion tu as juste à comparer ta chaine dans le fichier et ton timestamp.
      (Ça m'apprendra à lire que les messages en diagonale)
      0
    4. okuni Messages postés 1325 Statut Membre 126
       
      oui effectivement. donc une simple différence des 2 dates suffit.
      0