Usando a função strtotime para manipular datas
Volta e meia recebo emails onde vejo perguntas de "Como somar X dias a uma data?", "Como descubro quando é a próxima quinta?", e muitas outras assim. Me assuto ao ver respostas enormes com códigos que fazem de tudo, até calcular dias levando em conta um algoritmo maluco q determina ano bisexto... não entendo porque complicar tanto.
A função strtotime() esta ai para isso, nesse posto vou apresentar ela e mostrar casos simples de uso onde ela é muito eficaz. Além de verificar a performance da função utilizando um benchmark simples.
Qual é o segredo da função strtotime? É simples, a função aceita uma string, no formato "US English date", e realiza um parse nela transformando em um timestamp. Esta capacidade amplia o horizonte de funcionalidade da strtotime() tornando possivel a soma de datas, obtenção de dias específicos e inumeras outras funcionalidades.
Ela recebe dois parametros, time e now:
time - String de acordo com o padrão de datas GNU
now - timestamp de referencia
Como usar?
A função pode ser usada somente com o parametro time, mas a presença do parametro now faz com que este data seja o marco de referência da função, vou exemplificar com alguns exemplos:
PHP:
Vale notar a sintaxe "+3 day" onde o sinal "+" e o número devem estar colados e o "day" (dia) no singular. Isto pode causar alguns transtornos como já apreceram na lista php-pt que participo.
Não sei se isso ajuda muitos, mas realmente é melhor que se entregar a funções que são de certa forma "engessadas" em relação ao formato de entrada da data, ou classes complexas que adicionam dezenas de linhas de codigo.
Vale também resaltar a utilidade desta função na interpretação de data vindas do MySQL Como sabemos, datas do MySQL estão no formato "YYYY-MM-DD", e para formatar esta data com a função date, strftime ou mktime precisamos fazer um trabalho extensivo de substrings para ajeitar a data. Alás que com esta função podemos fazer isso rapidamente, obeserve:
PHP:
A função strtotime() esta ai para isso, nesse posto vou apresentar ela e mostrar casos simples de uso onde ela é muito eficaz. Além de verificar a performance da função utilizando um benchmark simples.
Qual é o segredo da função strtotime? É simples, a função aceita uma string, no formato "US English date", e realiza um parse nela transformando em um timestamp. Esta capacidade amplia o horizonte de funcionalidade da strtotime() tornando possivel a soma de datas, obtenção de dias específicos e inumeras outras funcionalidades.
Ela recebe dois parametros, time e now:
time - String de acordo com o padrão de datas GNU
now - timestamp de referencia
Como usar?
A função pode ser usada somente com o parametro time, mas a presença do parametro now faz com que este data seja o marco de referência da função, vou exemplificar com alguns exemplos:
PHP:
<?php //Pegar a hora agora echo strtotime("now"); //Usando uma data textual echo strtotime("10 September 2000"); //Adicionar um dia echo strtotime("+1 day"); //Adicionar uma semana echo strtotime("+1 week"); //Adicionar uma semana, dois dias, quatro horas e dois segundos echo strtotime("+1 week 2 days 4 hours 2 seconds"); //Buscar por dia da semana, próxima quinta echo strtotime("next Thursday"); //Buscar por dia da semana, última segunda echo strtotime("last Monday"); //Pegar data de hoje e adicionar 10 dias $now = strtotime("now"); echo strtotime("+10 day",$now); ?>
Vale notar a sintaxe "+3 day" onde o sinal "+" e o número devem estar colados e o "day" (dia) no singular. Isto pode causar alguns transtornos como já apreceram na lista php-pt que participo.
Não sei se isso ajuda muitos, mas realmente é melhor que se entregar a funções que são de certa forma "engessadas" em relação ao formato de entrada da data, ou classes complexas que adicionam dezenas de linhas de codigo.
Vale também resaltar a utilidade desta função na interpretação de data vindas do MySQL Como sabemos, datas do MySQL estão no formato "YYYY-MM-DD", e para formatar esta data com a função date, strftime ou mktime precisamos fazer um trabalho extensivo de substrings para ajeitar a data. Alás que com esta função podemos fazer isso rapidamente, obeserve:
PHP:
<?php //$data_do_db possui uma data vinda do MySQL echo date('d/m/Y'.strtotime($data_do_db)); ?>
Ótimo artigo...
13/06/2007 12:12am
(~17 anos atrás)
Para fazer a comparação da performance, vc usou a função dateAdd . Qual é o código dessa função?
21/05/2007 10:44am
(~17 anos atrás)
Mano, tô usando a "strtotime" para capturar o mês númerico de uma variável e tranformá-lo em NOME DO MÊS, só que só vem em inglês. Tem versão português pra essa função?
14/05/2007 4:10pm
(~17 anos atrás)
Bem elegante a solução para a conversão de datas, gostei e vou passar a usa-la! Parabens!
19/03/2007 11:42am
(~18 anos atrás)