strtotime() - Pode ajudar?

  • PHP
  • August 3, 2006

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:

< ? //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 < ? //$data_do_db possui uma data vinda do MySQL echo date(’d/m/Y’.strtotime($data_do_db)); ?>

NC`CUCBFaó//`o*sóeidCC`nUadmcmioofsni,aigmmeadgno*snoomeh:fsEsdenautxootdst`nreiomac`çtcqDmooa`ãouuaebbpottetsecpehiaatnoaçp$mnnacmradedãtmhaaooepmaat$xaad1etErpoeIa0ruxkecsnt0aae:rêsialcfsacIvu[oineEtaraaaizqxaqmllceuenuadtisecdineu=auo]ccrlBet(eia"eua1hs0=nn0tmãs1ced0taoó/"hsopi,00mpv:sm81ae1e/se//rr0z/bi20ka0ebamr08vslipe0/favoxls62u,eBgait0nze.ca00çuenrniv86ãmscaoda:oahfa00:Bmacdu48deaeaem::0inrlsa20.fckdoe040ehor":0rmfhdfe;20eaumalf02nrnseld"6çkç.dxea;7aãcaixt6footbãed4du:maio(a1en.l"t5ç0btisde40ã.redo/(4.o0/xabm"30:0mtdr/d400yueeY/2004pam2.0rloaH/B00o,u:Yea09jpin05eqfe:Hcm25cuors:ha76terf"imi57smo,:as67/sarsr60cetmd"ke43ooaa,m32ddnts2eeecestr9BevneAtre5exegdrtl2naeddtoa9cmase(otçhposs$tiãBmlatdimoeaepdaamenrsrote(ack/ofa()hbceuI":umseenn+matnspçi10arrcseãc5.kthoroi0fo_fad0ustsdoela0ntiterm,y4çrmrm"2ãtetpar+,8oo(oane1s1t)trcl5t6"i:isea,r8cmme?çt7ue0eã"o7s(..dodt3t)0paii6o:0haam5m0ps"e1"03sto)(*,.2)ru)$*03it;dp04Rnrao09ugatr41n,sa20tIi59iasns86mois24eflco29aui77dcçaf3*oiõlu4*le)i8bis)3ed.)p3na;rcdPoheocmruanrroiaksr:ussoa[olapgqdrouaiimf]feo(uirhnratçotãdpofo:i/ézl/ubcugllmaoargrb..aermnMaecefnhatmdeeaelridskouchpeomeunsrt.imacoeorsqm,mu.oebsriep/mampryltpirirfenoisdjcuoealcntdtdaasod/odcaoftdcoaeóiedaxiecagsimotmpeale:eésd/inbmeeicnnecushis_násdrtoirotortnoiudmmaeer.rpoahpdf)eunlçiãnohasstrdteotciómdeigdou.asvezes,porissodecidirepetirtestecomumtimestampnolugardadata.Destavezficouclaraaperformancemelhordafunçãostrtotime(),poisparatransformartimestampnoformatousadopelafunçãotemosqueexecutarafunçãodateprimeiro.
Tags:
comments powered by Disqus

Related Posts

2008: Acontecimentos que mudaram a internet

2008: Acontecimentos que mudaram a internet

  • January 7, 2009

Este ano for marcado por várias mudanças, muitas em minha vida profissional e muitas na minha vida pessoal. Ok, não vou ficar aqui papeando sobre minha vida pessoal, mas acredito que o que vi ocorrendo na minha vida profissional e com a internet em geral seja bem válido para um artigo.

Read More
errorHandler: Gerenciando erros

errorHandler: Gerenciando erros

  • January 15, 2007

Projetando um novo sistema, que irá incorporar 5 sub-sistemas, percebi que eu iria precisar de um gerenciamento de erros mais evoluído, e que me fornecesse mais detalhes para lidar com erros encontrados.

Decidi então criar um gerenciador de erros customizado que pudesse gerenciar totalmente os erros do site, tomando as atitudes necessárias quando fosse requisitado. Com ele em etapa de testes agora decidi compartilhar um pouco da experiência.

Read More
Picotando e maquiando URLs

Picotando e maquiando URLs

  • July 25, 2006

Seu site funciona na base do index.php?idpag=23&idproduto=343 ? Cada vez que você vai passar um URL você tem que explicar o que é a “?” e esses id* da vida?

Acabe com isso, facilite a vida do seu usuário e aumente até o acesso ao seu site com uma simples solução, mod_rewrite. Veja como implementar este módulo do Apache em seu servidor, neste post.

Read More