<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>Cauan Cabral &#187; datas</title> <atom:link href="http://cauancabral.net/tag/datas/feed/" rel="self" type="application/rss+xml" /><link>http://cauancabral.net</link> <description>Geek, nerd e apaixonado por tecnologia</description> <lastBuildDate>Sat, 24 Sep 2011 22:13:29 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>3F: Férias da Faculdade, Finalmente.</title><link>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/</link> <comments>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/#comments</comments> <pubDate>Fri, 12 Dec 2008 23:05:28 +0000</pubDate> <dc:creator>Cauan Cabral</dc:creator> <category><![CDATA[Desenvolvimento Web]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[conversão]]></category> <category><![CDATA[datas]]></category> <category><![CDATA[date]]></category> <category><![CDATA[locale]]></category> <guid
isPermaLink="false">http://geek.cauancabral.net/?p=80</guid> <description><![CDATA[Estou de férias, e aproveito para postar três pequenos scripts PHP para conversão de datas entre o padrão brasileiro e o SQL. <a
href="http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Para quem nunca viu a página &#8220;Mea Culpa&#8221; deste blog, sou acadêmico de Ciência da Computação na UFMS, e após um grande sufoco, consegui progredir de série. Agora posso desfrutar de 2 &#8220;longos&#8221; meses de descanso, da faculdade. O trabalho não para, ainda bem.</p><p>Para quebrar o marasmo, segue abaixo três funções em PHP que criei hoje para corrigir um problema na formatação de datas em uma página web.</p><p>Os dois primeiros são triviais, conversão de datas do padrão brasileiro para o padrão SQL:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> data_to_sql<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_reverse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//converte data do formato SQL para o brasileiro</span>
<span style="color: #000000; font-weight: bold;">function</span> data_from_sql<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_reverse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>E o terceiro é um pouco mais interessante, ele pode ser usado quando você quer montar um cabeçalho do tipo: quinta-feira, 12 de dezembro de 2009. O PHP fornece uma função nativa para isso, a função strftime(), mas ela tem como dependência um servidor com suporte a locale, e no meu caso, o locale pt_BR. Para contornar isso, fiz a seguinte função que resolve automáticamente a melhor forma de apresentar o cabeçalho desejado (considerando que strftime tem melhor desempenho do que algumas chamadas a função date(), time() e concatenação de strings):</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td
class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * monta cabeçalho para impressao da data em portugues
 *
 * @param $sdata time, passa a data desejada
 * @param $week boolean, se irá conter o nome da semana ou não
 * @return $data string, a data formatada para impressao
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> data_header<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sdata</span><span style="color: #339933;">,</span> <span style="color: #000088;">$week</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$months</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Janeiro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Fevereiro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Março'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Abril'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Maio'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Junho'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Julho'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Agosto'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Setembro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Outubro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Novembro'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Dezembro'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$weeks</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Domingo'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Segunda-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Terça-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Quarta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Quinta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Sexta-feira'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Sábado'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//se possuir suporte a setlocale com a região brasil, utiliza a função nativa</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_TIME<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;pt_BR&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$week</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$strformat</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'%A, %d de %B de %Y'</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">else</span>
			<span style="color: #000088;">$strformat</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'%d de %B de %Y'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strformat</span><span style="color: #339933;">,</span><span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$week</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$data</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$weeks</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'w'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">', '</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$data</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'j'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' de '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$months</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'n'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' de '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sdata</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>São funções simples mas que podem quebrar um galho em um dia apertado.</p><div
id="crp_related"><h3>Outros posts que podem interessar:</h3><ul><li><a
href="http://cauancabral.net/2008/01/23/validao-de-dados-em-php5-parte-3/" rel="bookmark" class="crp_title">Valida&#231;&#227;o de dados em PHP5 &#8211; Parte 3</a></li><li><a
href="http://cauancabral.net/2008/02/10/validao-de-dados-em-php5-final/" rel="bookmark" class="crp_title">Valida&#231;&#227;o de dados em PHP5 &#8211; final</a></li><li><a
href="http://cauancabral.net/2008/01/02/validacao-de-dados-em-php5-parte-1/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 1</a></li><li><a
href="http://cauancabral.net/2010/03/20/3%c2%ba-workshop-do-phpms/" rel="bookmark" class="crp_title">3º Workshop do PHPMS</a></li><li><a
href="http://cauancabral.net/2008/01/03/validacao-de-dados-em-php5-parte-2/" rel="bookmark" class="crp_title">Validação de dados em PHP5 &#8211; Parte 2</a></li></ul></div>]]></content:encoded> <wfw:commentRss>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
