Fonction time() - PHP [Résolu/Fermé]

Signaler
Messages postés
816
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
16 novembre 2016
-
 Utilisateur anonyme -
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,

2 réponses


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.
Messages postés
816
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
16 novembre 2016
50
Bonsoir,

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


Cordialement,
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.
Utilisateur anonyme
si je prend deux time() différents de la même zone
Le problème n'est pas celui du time()
C'est celui du date()
Quand tu lui donnes 300 secondes, pour date() c'est le 1er janvier 1970 00h 05 min GMT donc 1er janvier 1970 01h 05 min heure de Paris. Si tu demandes d'afficher heures et minutes, il y a bien 1h05
Messages postés
816
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
16 novembre 2016
50
Ah d'accord. Je pensais que le date() et le time() avait le même fuseau horaire.
Merci encore et désolé.
Utilisateur anonyme
date() et le time() avait le même fuseau horaire
Ben oui, ils ont le même fuseau horaire. Mais dans ton problème, on se moque éperdument du fuseau horaire de time().
Peut-être que je ne sais pas expliquer.
Messages postés
816
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
16 novembre 2016
50
Pourtant j'ai réglé le fuseau horaire de mon site en GMT, et maintenant il m'affiche bien 5minutes.
Utilisateur anonyme
C'est parfaitement logique avec l'explication que je t'avais donnée.