Pregunta

tengo una variable $newTime, que es el tiempo en segundos formado por mktime(), y quiero convertirlo en número de días.

En este caso se acabó 86.400 (que es una cantidad de segundos en un día), y trato de dividirlo por 86.400 para obtener el número de días (redondeado).

Pero a veces me sale:

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

y aveces:

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

Este es el código:

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

Cuando no uso bcmath, solo las matemáticas normales ($newTime / (60*60*24)), siempre obtengo resultados flotantes.

¿Fue útil?

Solución

¿Ha configurado la escala usando bcscale?Si está configurado en 0, podría explicar el comportamiento.Por favor, intenta llamar bcscale(100) antes de su cómputo;

Otros consejos

Podrías usar:

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

Sin nada de nada, por favor.

Ejemplos:

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

$newTime = 87986;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //1 Always
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top