2013-04-10 7 views
-2

Pourquoi la sortie du code ci-dessous est-elle négative?Différence de temps incorrecte

code:

$date=strtotime("2013-04-10 21:31:30"); 
$now=time(); 
$diff=$now-$date; 
echo $diff; 

Au-dessus de la sortie de code est -17295

Merci!

+2

est-ce pas '$ date> now' de $? – Zbigniew

Répondre

1

Je pense vous obtenez une réponse négative comme le temps 2013-04-10 21:31:30, que vous affectez à $date La variable PHP est un heure standard indienne.

Votre fuseau horaire du serveur ne peut pas être Asie/Calcutta .Donc vous devez définir le fuseau horaire par défaut utilisé par toutes les dates/fonctions de temps dans un script pour Asie/Calcutta en utilisant date_default_timezone_set fonction.

Cela devrait fonctionner parfaitement: IDEONE DEMO

<?php 
$date=strtotime("2013-04-10 21:31:30"); 
if(function_exists('date_default_timezone_set')) 
           date_default_timezone_set("Asia/Calcutta"); 
$now=time(); 
$diff=$now-$date; 
echo $diff; 
?> 
+0

merci beaucoup ... –

+0

@Harikrishnan :) :) –

1

Parce que vous soustrayez quelque chose de plus (strtotime("2013-04-10 21:31:30")) de quelque chose plus petit ($date)

Mais il a aussi peut-être parce que vous avez pas défini le fuseau horaire ou il n'est pas réglé correctement en PHP, si $now est vraiment supérieur à $date

+0

Merci, ce sera une raison. –

1

car l'horodatage de la date de $ est à l'avenir et est donc maintenant $ de moins que lui, produisant ainsi un nombre négatif

0

Si nous 1365612708 secondes du 1 janvier 1970 et ce soir à 21:31:30 est 1365625890 secondes de 1 janvier 1970 lorsque vous soustrayez maintenant (1365612708) du soir heure indiquée (1365625890) vous obtenez -13182 secondes (ce qui est de 3,6 heures (aka 3 heures 30 minutes (ish)) à l'avenir)