Question

J'ai une variable $newTime, qui est le temps en secondes réalisés par mktime(), et je veux le convertir en nombre de jours.

Dans ce cas, il est plus 86.400 (qui est un nombre de secondes dans une journée), et j'essaie de diviser par 86.400 pour obtenir le nombre de jours (arrondi).

Mais parfois, je reçois:

Case 1: 87951 / 86400 = 1.0179513888 (1 day ago)
Case 2: 156257 / 86400 = 1.8085300925 (2 days ago)

et parfois:

Case 1: 87986 / 86400 = 1 (Should be 1 day ago)
Case 2: 156292 / 86400 = 1 (Should be 2 days ago)

C'est le code:

$newTime = round(bcdiv($newTime, bcmul("24", bcmul("60", "60"))),0);

Lorsque je n'utilise pas bcmath, juste l'ordinaire de mathématiques ($newTime / (60*60*24)), J'ai flottant à chaque fois des résultats.

Était-ce utile?

La solution

Avez-vous définir l'échelle à l'aide de bcscale?Si elle est définie à 0, il pourrait expliquer le comportement.S'il vous plaît, essayez d'appeler bcscale(100) avant votre calcul;

Autres conseils

Vous pouvez utiliser:

$newTime = round( $newTime / (60 * 60 * 24));

Sans bcmath à tous s'il vous plaît.

Exemples:

$newTime = 156292;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //2 Always

$newTime = 87986;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //1 Always
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top