Prob de date

Résolu
Hight91 Messages postés 4 Statut Membre -  
jeremy.s Messages postés 1248 Statut Membre -
voila mon code
<?php
$h1 = strtotime('2013-06-15 04:30:00');
$h2 = strtotime("06:00:00");
echo ''.$h1.' <br>';
echo ''.$h2.' <br>';

echo gmdate('Y m d H:i',$h1-$h2) ;
?>
cela m'affiche :1970 02 06 22:30

alors que moi je veux ca : 2013-06-14 22:30

pouvez vous m aider ?

3 réponses

  1. Gigatrappeur Messages postés 230 Statut Membre 25
     
    Bonjour,

    En faite, $h2 correspond à la date actuelle à 6h et non au 1er janvier 1970 à 6h.
    Essaye ça :
    <?php 
    $h1 = strtotime('2013-06-15 04:30:00'); 
    $h2 = strtotime("06:00:00"); 
    $h3 = strtotime("1970-01-01 06:00:00");
    echo '$h1 = '.$h1.' --> '.gmdate('Y m d H:i',$h1).' <br />'; 
    echo '$h2 = '.$h2.' --> '.gmdate('Y m d H:i',$h2).'<br />'; 
    echo '$h3 = '.$h3.' --> '.gmdate('Y m d H:i',$h3).'<br />'; 
    echo '$h1 - $h2 = '.($h1-$h2).' --> '.gmdate('Y m d H:i',$h1-$h2).'<br />';
    echo '$h1 - $h3 = '.($h1-$h3).' --> '.gmdate('Y m d H:i',$h1-$h3).'<br />';
    ?> 
    

    Cordialement,
    Gigatrappeur
    0
  2. jeremy.s Messages postés 1248 Statut Membre 79
     
    Salut !

    Si tu veux simplement soustraire une période à une date, tu peux utilisé l'objet DateTime :
    https://www.php.net/manual/fr/class.datetime.php
    Et la fonction sub :
    https://www.php.net/manual/fr/datetime.sub.php

    Donc :
    $h1 = new DateTime('2013-06-15 04:30:00');
    $h2 = $h1->sub(new DateInterval('P6H'));
    echo $h1->format('d-m-Y H:i');
    echo $h2->format('d-m-Y H:i');
    0
    1. Gigatrappeur Messages postés 230 Statut Membre 25
       
      Ouai aussi...
      0
  3. Hight91 Messages postés 4 Statut Membre
     
    merci de vos réponse mais j ai pas la solution

    gigatrappeur

    $h1 - $h3 = 1371245400 --> 2013 06 14 21:30

    il m enlève 7 h ou lieu de 6 :(

    pour jeremy
    le prob c est l heure a enlever n est pas toujours la même
    j ai pris 6:00:00 pour exemple mais çà peut être 1:42:50 donc ça risque d être galère pour placer la variable
    0
    1. Gigatrappeur Messages postés 230 Statut Membre 25
       
      En faite, ce que je t'ai donné est correct, c'est juste que le fuseau horaire dans lequel tu est, est en H-1.

      Ajoute ça avant le code précédamment fournis :
      date_default_timezone_set('Europe/London');
      0
    2. Hight91 Messages postés 4 Statut Membre
       
      merci beaucoup
      0
    3. jeremy.s Messages postés 1248 Statut Membre 79
       
      C'est pas spécialement un problème, tu te fais une fonction qui prend $h $m $s en parametre.
      fonction soustrait_date(DateTime $date, $h, $m,$s
      {
      $res = $date
      if($h > 0) res = res->sub(new DateInterval('P'.$h.'H');
      if($m > 0) $res = res->sub(new DateInterval('P'.$m.'M');
      if($s > 0) $res = res->sub(new DateInterval('P'.$s.'S'); // A vérifier pour les formats minutes et secondes
      return $res
      }
      0