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

PHPSPCast: Uma nova iniciativa

PHPSPCast: Uma nova iniciativa

  • April 2, 2009

PHPSPCastDesde que me mudei para São Paulo minha participação na comunidade PHP em geral esta cada vez mais emocionante. Desde que conversei com alguns amigos e decidimos organizar o PHPSP (Grupo de Desenvolvedores PHP de São Paulo) as ídeias não param de surgir, e muitas ideias já estão virando fatos concretos.

Read More

  • January 1, 1

Blog Post Ideation & Concepts

Post 1: The New Engineering Frontier: From Syntax to Strategy

Line Spacing: 1.15

Read More
Meme: Seu Ambiente de Desenvolvimento em 7 items

Meme: Seu Ambiente de Desenvolvimento em 7 items

  • December 17, 2010

Esta ideia originou com o Duodraco e o Augusto Pascutti. Simples e direta, escreva sobre o seu ambiente de trabalho, suas ferramentas do dia a dia de programador, vamos conhecer um pouco melhor nossas opções, vejam as regras

Read More