Los interesados en obtener una introducción a Spoon pueden leer el Manual sobre las Librerías Spoon. Nosotros en este artículo pretendemos dar un ejemplo sobre el uso de una de las clases que nos ofrece Spoon para realizar cosas con fechas, que pueden venirnos bien en nuestros proyectos. En este caso vamos a ver una clase que tiene solamente un par de métodos estáticos (que podremos llamar a partir del nombre de la clase) con los que averiguar el tiempo transcurrido desde una fecha o mostrar una fecha en cualquier idioma.
//Definir el directorio donde está la carpeta spoon y añadir a la ruta de includes de PHP
define('PATH_LIBRARY', 'C:/xampp/htdocs/');
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);
//incluir ahora spoon
require_once 'spoon/spoon.php';
//incluyo también la librería date
require_once 'spoon/date/date.php';
Como hemos dicho, dentro de la librería Date de Spoon, tenemos una clase que tiene apenas dos métodos estáticos. Como son estáticos, recordamos que podremos invocarlos directamente a partir del nombre de la clase, con el operador "::". Por ejemplo:
SpoonDate::getDate();
Para obtener entonces esa fecha en español, o cualquier otro idioma, utilizamos la función getDate() de Spoon, que recibe los siguientes parámetros:
SpoonDate::getDate($formato, $timestamp_de_la_fecha, $idioma, $GMT);
$formato: Sirve para indicar el formato de la fecha que queremos obtener, que es una cadena de caracteres igual que el formato que enviamos a la función date() de PHP.
$timestamp: es un entero con el timestamp de la fecha que queremos mostrar. Ese timestamp podemos obtenerlo con las funciones time() (timestamp del momento actual) o mktime() (timestamp de cualquier momento enviado como parámetro).
$idioma: que es un string con el código del idioma que deseemos utilizar. Los valores serán como "en" para inglés, "es" para español, "fr" para francés, etc. Podremos ver todos los códigos de idioma en el directorio "locale/data" que hay dentro del directorio de "spoon".
$GMT: un boleano que indica si se puede considerar el timestamp como GMT/UTC.
Por ejemplo, con este código mostramos la fecha de hoy en perfecto español:
echo SpoonDate::getDate("l j de F de Y", time(), 'es');
El método estático que vamos a ver se llama getTimeAgo() y digo que muestra sólo una parte del tiempo transcurrido porque sólo nos indica el mayor de los intervalos de tiempo utilizados. Por ejemplo, si la han pasado 3 horas, 40 minutos y 30 segundos desde un timestamp, la función nos devuelve simplemente "3 horas". Otros valores que podremos recibir para expresar el tiempo pasado, serían por ejemplo "34 segundos", "5 días" o "4 meses".
Los parámetros que debemos enviar son los siguientes:
SpoonDate::getTimeAgo($timestamp,$idioma);
$timestamp: El primer parámetro es para indicar el timestamp de la fecha sobre la que queremos calcular el tiempo transcurrido.
$idioma: el código de idioma. Por ejemplo, "es" para español. Recordando que los códigos de idioma disponibles inicialmente están en el directorio "locale/data" de Spoon.
Ahora, podemos ver un posible uso de esta función:
SpoonDate::getTimeAgo(time()-23,'es');
Eso nos diría que han pasado "23 segundos", ya que estamos enviando el timestamp actual (obtenido por la función time() de PHP) restándole 23.
$tiempos = array(time(), time()-(3*60), time()-(4*60*60*24), mktime(12,3,0,5,24,2010), mktime(0,0,0,9,17,1940));
foreach($tiempos as $tiempo){
echo '<p> Publicado ';
echo SpoonDate::getTimeAgo($tiempo,'es');
echo ' desde ';
echo SpoonDate::getDate("l j de F de Y", $tiempo, 'es');
}
Al ejecutar ese código recibiremos una salida como la siguiente:
Publicado hace 1 segundo (martes 15 de junio de 2010)
Publicado hace 3 minutos (martes 15 de junio de 2010)
Publicado hace 4 días (viernes 11 de junio de 2010)
Publicado hace 3 semanas (lunes 24 de mayo de 2010)
Publicado hace 61 años (viernes 17 de septiembre de 1948)
Eso es todo sobre la librería date() de Spoon para trabajo con fechas. Creo que podemos decir sin miedo a equivocarnos que las funcionalidades disponibles en el momento de escribir este artículo no son muy variadas, pero al menos son bastante útiles.