Esto quiere decir que, el siguiente código php:
<?php echo time (); ?>
devuelve, en el momento que estoy escribiendo esta entrada (23 de diciembre de 2011) lo siguiente:
Si a ese número, 1.324:641.094, lo guardamos en una variable, que llamaré $original, y con ella hacemos algunas divisiones, utilizando operadores aritméticos, podríamos convertir esa cantidad inimaginable de segundos, en algo más entendible:
<?php $original=1324641094; $uno=($original / 60); $segundos=($original % 60); $dos=($uno / 60); $minutos=($uno % 60); $tres=($dos / 24); $horas=($dos % 24); $cuatro=$tres-10; $anios=floor($cuatro / 365); $dias=($cuatro % 365); $meses=floor($dias / 30); $dias=($dias % 30); echo $anios." años, ".$meses." meses, ".$dias." días, ".$horas." horas, ".$minutos." minutos y ".$segundos." segundos."; ?>
El resultado de este script sería el siguiente:
Como ven, convierte esa cantidad de segundos transcurridos entre el 1 de enero de 1970 y el 23 de diciembre de 2011 en su equivalente en años, meses, días, etc.
Explico el script, línea por línea:
- Marca de apertura del script PHP
- Define la variable $original conteniendo el número 1324641094 que corresponde al total de segundos.
- Define la variable $uno conteniendo el resultado de dividir la variable $original entre 60, para obtener el total de minutos.
- Halla el resto de la división de la línea anterior, o sea los segundos que "sobran" y no completan el minuto. Este valor lo guarda en la variable $segundos, una de las que se va a imprimir en la línea 14.
- Define la variable $dos como el resultado de dividir $uno (el total de minutos) entre 60 para obtener el total de horas.
- Halla el resto de la división de la línea anterior, o sea los minutos que "sobran" y no completan la hora. Este valor lo guarda en la variable $minutos, otra de las que se va a imprimir en la línea 14.
- Define la variable $tres como el resultado de dividir $dos (el total de horas) entre 24 para obtener el total de días.
- Halla el resto de la división de la línea anterior, o sea las horas que "sobran" y no completan el día. Este valor lo guarda en la variable $horas, otra más de las que se van a imprimir en la línea 14.
- Desde 1970 hasta la fecha, han habido 10 años bisiestos, o sea de 366 días. Así que para la operación a realizarse en la línea siguiente es necesario quitar de los días totales ($tres) esos 10 días (para poder considerar todos los años iguales, de 365 días). El resultado de esta resta se guarda en la variable $cuatro. Para usar este script a partir del 29 de febrero de 2012, serán 11 los años bisiestos, por lo que la resta el sustraendo pasará a ser 11.
- Define la variable $anios, como el resultado de dividir $cuatro (el total de días, menos los 29 de febrero) entre 365.
La función floor redondea el resultado hacia abajo, ignorando los números después de la coma en el resultado de la división. Esta variable $anios, es una de las que se imprimen en la línea 14.- Halla el resto de dividir $cuatro (la cantidad de días totales, menos los 10 días "extras" de los años bisiestos) entre 365 y guarda el resultado, o sea los días que "sobran" y no completan un año, en la variable $dias.
- Define la variable $meses, como el resultado de dividir $dias (los días "sobrantes") entre 30 (*).
La función floor redondea el resultado hacia abajo, ignorando los números después de la coma en el resultado de la división. Esta variable $meses, es una de las que se imprimen en la línea 14.- Halla el resto de la división de la línea anterior, o sea, los días que "sobran" y no completan el mes. Este valor lo guarda en la variable $dias, y le sobrescribe el valor que tenia previamente. Esta es la última de las variables que se van a imprimir en la línea 14.
- Finalmente, con echo, se procede a imprimir en la pantalla los contenidos de las variables evocadas y concatenados con los textos que se muestran entre comillas, para dar el resultado que se ve en la captura de pantalla anterior.
- Marca de cierre del script PHP
El mismo resultado se obtendría escribiendo menos líneas, de la siguiente manera:
<?php $original=1324641094; $segundos=($original % 60); $minutos=(($original / 60) % 60); $horas=((($original / 60)/ 60) % 24); $anios=floor((((($original / 60)/ 60) / 24)-10) / 365); $meses=floor(((((($original / 60)/ 60) / 24)-10) % 365)/ 30); $dias=(((((($original / 60)/ 60) / 24)-10) % 365) % 30); echo $anios." años, ".$meses." meses, ".$dias." días, ".$horas." horas, ".$minutos." minutos y ".$segundos." segundos."; ?>
Estos dos scripts devuelven siempre el mismo resultado, ya que parten de una variable con contenido fijo. Si se modifica la línea en la que se define la primera varible (o sea
$original=1324641094;) por $original=time(); el resultado del script es distinto cada vez que se ejecuta (ya que el contenido de $original cambiaría cada segundo). Hagan la prueba.(*) El resultado no es exacto, ya que se consideraron todos los meses como de 30 días.
Para obtener un resultado exacto (aunque sin horas, ni minutos, ni segundos), se podría utilizar un script de Webtutoriales.com que, levemente modificado, da el siguiente resultado:
Las pequeñas modificaciones que le hice al código original son, por ejemplo, ingresarle las fechas que me interesan para este ejemplo (01/01/1970 y 23/11/2011) y cambiar la forma que se muestran los datos que devuelve el script para que se mostraran de forma similar a los scripts anteriores.
Como pueden ver, el error del script que hice yo a lo "bruto" es de unos 4 días con respecto al correcto script de Webtutoriales.com.





