Classe SpoonDate

Vejamos a classe SpoonDate das bibliotecas Spoon, com utilidades para obter uma data em múltiplos idiomas e para averiguar o tempo transcorrido desde uma data.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 13/7/10
Valorize este artigo:
Há umas semanas comentamos algumas bibliotecas para PHP 5 chamadas Spoon, que contêm uma série de classes e funções para realizar tarefas comuns dentro de aplicações web com PHP. Estas bibliotecas são bastante simples de usar e fornecem funcionalidades interessantes que nos pouparão tempo.

Os interessados em obter uma introdução a Spoon podem ler o Manual sobre as Bibliotecas Spoon.. Neste artigo pretendemos dar um exemplo sobre o uso de uma das classes que nos oferece Spoon para realizar coisas com datas, que podem vir a calhar em nossos projetos. Nesse caso vamos ver uma classe que tem apenas um par de métodos estáticos ( que poderemos chamar a partir do nome da classe) com os quais podemos averiguar o tempo transcorrido desde uma data ou exibir uma data em qualquer idioma.

Incluir a biblioteca SpoonDate

A classe que contem as funcionalidades para datas de Spoon se chama SpoonDate e este seria o código necessário para iniciar e incluir uma biblioteca de trabalho com datas.

//Definir o diretório onde está a pasta spoon e adicionar à rota de includes de PHP
define('PATH_LIBRARY', 'C:/xampp/htdocs/');
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);

//incluir agora spoon
require_once 'spoon/spoon.php';
// incluo também a biblioteca date
require_once 'spoon/date/date.php';

Como dissemos, dentro da biblioteca Date de Spoon, temos uma classe que possui apenas dois métodos estáticos. Como são estáticos, lembramos que poderemos invocá-los diretamente a partir do nome da classe, com o operador "::" . Por exemplo:

SpoonDate::getDate();

Função multiidioma para obter uma data com PHP

A função date(), nativa de PHP, tem uma funcionalidade bastante boa para escrever datas em distintos formatos. O problema é que as cadeias de texto das datas que obtemos com date()estão escritas em inglês, o que para nós não nos serve muito. O mais seguro é que queiramos mostrar as datas em português, ou que desejemos fazer uma web multiidioma e neste caso essa função resulta insuficiente.

Para obtermos, então, essa data em português, ou em qualquer outro idioma, utilizamos a função getDate() de Spoon, que recebe os seguintes parâmetros:

SpoonDate::getDate($formato, $timestamp_da_data, $idioma, $GMT);

$formatoServe pra indicar o formato da data que queremos obter, que é uma cadeia de caracteres igual ao formato que enviamos à função date () de PHP

$Timestamp: É um inteiro com o timestamp da data que queremos exibir. Esse timestamp pode ser obtido com as funções time() ( timestamp do momento atual) ou mktime() ( timestamp de qualquer momento enviado como parâmetro)

$Idioma: que é uma string com o código do idioma que desejamos utilizar. Os valores serão como "en" para inglês, "es" para espanhol, "fr" para francês etc. Poderemos ver todos os códigos de idioma no diretório "locale/data" que há dentro do diretório de "spoon"

$GMT: um booleano que indica se se pode considerar o timestamp como GMT/UTC

Por exemplo, com este código exibimos a data de hoje em um português perfeito:

echo SpoonDate::getDate("l j de F de Y", time(), 'pt');

Averiguar o tempo transcorrido desde uma data

A outra das funções que incorpora a classe SpoonDate nos serve para exibir de uma forma resumida o tempo que transcorreu desde um timestamp que devemos enviar como parâmetro. Essa maneira de ver o tempo é muito popular nas páginas atuais e não indica o tempo completo passado e sim, uma parte dele.

O método estático que vamos ver se chama geTimeAgo() e digo que exibe apenas uma parte do tempo transcorrido porque só nos indica o maior dos intervalos de tempo utilizados. Por exemplo, se se passaram 3 horas, 40 minutos e 30 segundos desde um timestamp, a função nos retorna simplesmente "3 horas". Outros valores que podemos receber para expressar o tempo passado seriam, por exemplo "34 segundos", "5 dias" ou "4 meses".

Os parâmetros que devemos enviar são os seguintes:

SpoonDate::getTimeAgo($timestamp,$idioma);

$timestamp: O primeiro parâmetro é para indicar o timestamp da data sobre a que queremos calcular o tempo transcorrido.

$idioma:O código de idioma. Por exemplo, "pt" para português. Recordando que os códigos de idioma disponíveis inicialmente estão no diretório "locale/data" de Spoon.

Agora, podemos ver um possível uso desta função.

SpoonDate::getTimeAgo(time()-23,'pt');

Isso nos diria que se passaram "23 segundos", já que estamos enviando o timestamp atual ( obtido pela função time() de PHP) faltando 23.

Se você tem algum problema porque a função retorna uma cadeia em UTF8, ou você está trabalhando com outro jogo de caracteres, pode utilizar a função utf8_decode()
utf8_decode(SpoonDate::getTimeAgo($tempo,'pt'));

Exemplo de trabalho com SpoonDate e várias datas

Neste exemplo simples vamos ter várias datas em um array e depois recorreremos ao Array para exibir o tempo transcorrido desde essa data e a própria data escrita no idioma português.

$tempos = 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($tempos as $tempo){
   echo '<p> Publicado ';
   echo SpoonDate::getTimeAgo($tempo,'pt');
   echo ' desde ';
   echo SpoonDate::getDate("l j de F de Y", $tempo, 'pt');
}

Ao executar esse código receberemos uma saída como o seguinte:

Publicado há 1 segundo( terça-feira 15 de junho de 2010)
Publicado há 3 segundos( terça-feira 15 de junho de 2010)
Publicado há 4 dias (sexta-feira 11 de junho de 2010)
Publicado há 3 semanas(segunda-feira 24 de maio de 2010)
Publicado há 61 anos(sexta-feira 17 de setembro de 1948)

Isso é tudo sobre a biblioteca date() de Spoon para um trabalho com datas. Creio que podemos dizer, sem medo de errar, que as funcionalidades disponíveis na hora de escrever este artigo não são muito variadas , mas são, pelo menos, bastante úteis.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato