Prob de date

Résolu
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. 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
    1. 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
      1. 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');
      2. merci beaucoup
      3. 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
        }