Suponiendo que tengo una marca de tiempo Unix en PHP. ¿Cómo puedo redondear mi marca de tiempo php al minuto más cercano? P.ej. 16:45:00 a diferencia de 16:45:34?Round php timestamp al minuto más cercano
Gracias por su ayuda! :)
Suponiendo que tengo una marca de tiempo Unix en PHP. ¿Cómo puedo redondear mi marca de tiempo php al minuto más cercano? P.ej. 16:45:00 a diferencia de 16:45:34?Round php timestamp al minuto más cercano
Gracias por su ayuda! :)
Si la marca de tiempo es una marca de tiempo Unix estilo, simplemente
$rounded = round($time/60)*60;
Si es el estilo que se indica, sólo tiene que convertirlo en una marca de tiempo Unix estilo y la espalda
$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60);
round()
se usa como una forma simple de asegurar que se redondea a x
para valores entre x - 0.5 <= x < x + 0.5
. Si usted siempre quiso redondear siempre hacia abajo (como se indica) se puede utilizar floor()
o la función módulo
$rounded = floor($time/60)*60;
//or
$rounded = time() - time() % 60;
Yacoby, gracias por la explicación completa! Ahora que lo mencionas, round() es la función que prefiero tener. Tiene más sentido en mi aplicación. :) – Lyon
Ah presa. Muéstremelo :)
Esta fue mi solución también.
<?php
$round = (round (time()/60) * 60);
echo date('h:i:s A', $round);
?>
jeje, ¡realmente aprecio tu ayuda! Gracias :) – Lyon
Una alternativa es la siguiente:
$t = time();
$t -= $t % 60;
echo $t;
He leído que cada llamada a time()
en PHP tuvo que recorrer todo el camino a través de la pila de nuevo al sistema operativo. No sé si esto ha sido cambiado en 5.3+ o no? El código anterior reduce las llamadas a tiempo() ...
código de referencia:
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time(); $t -= $t %60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time() - time() % 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = floor(time()/60) * 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'
Curiosamente, más de 10 millones itterations los tres realmente hacen al mismo tiempo;)
16:45:00 todavía tiene segundos ... Creo que quieres decir que quieres redondear al próximo minuto más cercano, en lugar de eliminar los segundos. – Layke
Acabo de instalar PHP, así que puedo darle el código para hacerlo. No quiero adivinar porque odio el tiempo(). Voy a responder en 10 minutos si nadie más tiene. – Layke
@Laykes http://codepad.org/ es bueno para hacer verificaciones rápidas de código – Yacoby