Prob de date

Résolu
Hight91 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   -
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 226 Date d'inscription   Statut Membre Dernière intervention   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 1226 Date d'inscription   Statut Membre Dernière intervention   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 226 Date d'inscription   Statut Membre Dernière intervention   25
 
Ouai aussi...
0
Hight91 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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 226 Date d'inscription   Statut Membre Dernière intervention   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 3 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   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