incohérence bizzar bizzar avec time()

Petit nouveau ! | 6 Messages

25 avr. 2012, 11:47

Bonjour tout le monde,

Depuis quelque jour je suis bloqué sur un bout de code dont ci-dessous une copie :

Code : Tout sélectionner

<?php $date1 = date('Y-m-j H:m:s', time()); function date_to_timestamp($string) { list($date, $time) = explode(' ', $string); list($year, $month, $day) = explode('-', $date); list($hour, $minute, $second) = explode(':', $time); $timestamp = mktime($hour, $minute, $second, $month, $day, $year); return $timestamp; } echo "test1 : ".date_to_timestamp($date1)."<br />"; //affiche 1335344645 echo "real time :".time()."<br />"; //affiche 1335347285 ?>
Donc voilà mon problème comment ce fait'il que j'ai deux valeurs de timestamp différentent en affichant directement la valeur avec time() et convertisant une date et heure en timestamp?
Il y a peut être une décalage en micro seconde mais la j'ai des heurs de décalage.

Si quelqu'un pourrais m'expliquer ce qui se passe ou qui à une autre solution pour convertir une date et heure en timestamp.

Merci d'avance :wink:

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 12:16

Différence heure d'été et heure d'hiver ? Regardes le dernier paramètre de la fonction mktime().

Eléphant du PHP | 267 Messages

25 avr. 2012, 12:26

c'est certainement une histoire de cache ...

Petit nouveau ! | 6 Messages

25 avr. 2012, 12:53

ok, Merci, je vais regarder pour le décalage horaire. Par contre je ne penses pas que ça soit le cache. j'ai essayé sur deux machines avec la suppression de cache.

Petit nouveau ! | 6 Messages

25 avr. 2012, 13:18

j'ai modifier mon code mais rien ne change.

Code : Tout sélectionner

<?php header("Cache-Control: no-cache, must-revalidate"); date_default_timezone_set('Africa/Nairobi'); $date1 = date('Y-m-j H:m:s', time()); function date_to_timestamp($string) { list($date, $time) = explode(' ', $string); list($year, $month, $day) = explode('-', $date); list($hour, $minute, $second) = explode(':', $time); $timestamp = mktime($hour, $minute, $second, $month, $day, $year); return $timestamp; } echo "test1 : ".date_to_timestamp($date1)."<br />"; //affiche 1335344645 echo "real time :".time(); //affiche 1335347285 $var1 = time(); $var2 = date_to_timestamp($date1); echo "<br />diff&eacute;rence : ".($var1-$var2); ?> en plus j'ai une différence de 120 vers xxx secondes

ViPHP
ViPHP | 2577 Messages

25 avr. 2012, 13:35

N'utilise qu'un seul time() => pas d'écart
Compare des dates lisible => écart plus compréhensible (plus lisible) ?
<?PHP
$time1 = time();
$date1 = date('Y-m-j H:m:s', $time1);
$time2 = date_to_timestamp($date1);
$date2 = date('Y-m-j H:m:s', $time2);

echo $time1,' / ',$date1,'<br>'; 
echo $time2,' / ',$date2,'<br>'; 

?>

Petit nouveau ! | 6 Messages

25 avr. 2012, 13:50

merci, mais je ne m'en sort pas encore! je ne comprendre pas.
Voilà ce qui s'affiche en utilisant ton bout de code :


1335354428 / 2012-04-25 14:04:08
1335351848 / 2012-04-25 14:04:08


avec ou sans la définition du timezone.

Code : Tout sélectionner

function date_to_timestamp($string) { list($date, $time) = explode(' ', $string); list($year, $month, $day) = explode('-', $date); list($hour, $minute, $second) = explode(':', $time); $timestamp = mktime($hour, $minute, $second, $month, $day, $year); return $timestamp; } $time1 = time(); $date1 = date('Y-m-j H:m:s', $time1); $time2 = date_to_timestamp($date1); $date2 = date('Y-m-j H:m:s', $time2); echo $time1,' / ',$date1,'<br>'; echo $time2,' / ',$date2,'<br>'; ?>
J'ai une grande différence de 2000s dans le timestamp. Cela va être difficile de faire mes calculs.

ViPHP
ViPHP | 2577 Messages

25 avr. 2012, 14:16

Lol, les minutes c'est i et pas m
m c'est pour les mois.

Petit nouveau ! | 6 Messages

25 avr. 2012, 14:32

:evil: :evil:

Franchement, toute une matinée perdu pour une question de "i" et de "m".

Merci Mazarini.

Problème résolue.


Yeppa