Fonction time() - PHP

Résolu/Fermé
Utilisateur anonyme - 1 août 2013 à 20:56
 Utilisateur anonyme - 3 août 2013 à 00:15
Bonsoir,

Je voudrais comparer deux dates qui sont enregistrées avec la fonction time() sauf j'ai toujours 1h de décalage. Ceci ne vient pas du fuseau horaire.
Par exemple : à 20h40, j'enregistre la première date. J'enregistre l'autre à 20h45. Donc normalement il y a 5 minutes, sauf il va me dit qu'il y a 1h05.
Mais ce qui est étrange, c'est que si je fais ma deuxième date - la première, il va bien m'afficher 300secondes. Et le plus étrange, c'est que sur un autre site, cela marche parfaitement.

Mon code :
<?php
$sql= mysql_query('SELECT date_vote01 FROM membres where playerpseudo="'.$_SESSION['playersession'].'"');
$tabl = mysql_fetch_array($sql);
$date_vote01 = $tabl['date_vote01']; 
$date = $date_vote01;
$now = time();
$total = $now - $date;

if ($now - $date > 86400)
{
	//+ de 24h
	echo 'mon texte';
}
else
{
	//- de 24h
	echo '<span style="color:red">';
	echo date("H:i:s",$total);
	echo '</span>';
}
?>



Cordialement,
A voir également:

2 réponses

Utilisateur anonyme
1 août 2013 à 21:55
Bonsoir

D'où vient ton champ date_vote01 ? De la fonction time() de PHP ou de la fonction NOW() de mySQL ?
PHP et Mysql ont chacun leur propre système de date, avec des paramètres pour la prise en compte des fuseaux horaires et des heures d'hiver / d'été. Ces paramètres peuvent varier d'un serveur à l'autre.
Voilà pour l'explication (du moins une explication possible), pour le remède il faut avoir le détail du code, mais il suffit probablement d'une petite modification pour le rendre cohérent : soit n'utiliser que la fonction NOW() de mysql, soit n'utiliser que time() de PHP, mais ne pas mélanger les deux.
0
Utilisateur anonyme
1 août 2013 à 23:22
Bonsoir,

le champ date_vote01 est rempli avec la fonction time().


Cordialement,
0
Alors deux questions :
Comment enregistres-tu ta première date (requête) ?
Comment fais-tu ce calcul qui te donne une différence de 1h05 ? Je refuse de croire qu'en PHP une soustraction faite dans un sens donne 1h05 et dans l'autre 300s. Il s'agit de calculs différents.
0
Utilisateur anonyme
1 août 2013 à 23:34
J'enregistre de cette manière :
<?php
$now = time();
mysql_query('update membres set date_vote01='.$now.' where playerpseudo="'.$_SESSION['playersession'].'"');


Et pour mon calcul, c'est juste l'echo seul de mon $total qui est dans mon code ci-dessus. " $total = $now - $date; "
0
Utilisateur anonyme
1 août 2013 à 23:47
Ce calcul te donne donc 1h 05 soit 3900s. Et quel est le calcul qui te donne 300 s ?
0
Utilisateur anonyme
1 août 2013 à 23:48
non le calcul $total = $now - $date; me donne 300s. C'est pour ça que je ne comprend pas trop..
0
Utilisateur anonyme
2 août 2013 à 00:01
C'est parfaitement normal d'avoir 300 s, pour 20h45 - 20h40.
Quel est le calcul qui te donne 1 h 05 ?
C'est le echo date("H:i:s",$total); ?
Si c'est ça, rien de choquant : cette fonction n'est pas destinée à convertir des secondes en heures/minutes/secondes. Elle sert à formater un timestamp et ta différence heure2 - heure1 N'EST PAS un timestamp.
0
Oui c'est bien mon echo date("H:i:s",$total); qui me donne 1h05.
Mais pourquoi alors sur un autre site, ceci marche parfaitement ? Comment je peux afficher mon $total en Heure:minute ?
0