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

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
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
Gigatrappeur Messages postés 230 Statut Membre 25
 
Ouai aussi...
0
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
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
Hight91 Messages postés 4 Statut Membre
 
merci beaucoup
0
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