<?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; conversão</title>
	<atom:link href="http://cauancabral.net/tag/conversao/feed/" rel="self" type="application/rss+xml" />
	<link>http://cauancabral.net</link>
	<description>Geek, nerd e apaixonado por tecnologia</description>
	<lastBuildDate>Sun, 06 May 2012 23:53:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</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/2012/04/18/cakephp-plugin-locale/" rel="bookmark" class="crp_title">CakePHP: Plugin Locale</a></li><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/2012/05/06/campanha-do-armamento-serio/" rel="bookmark" class="crp_title">&#8220;Campanha do Armamento&#8221;, sério?</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></ul></div>]]></content:encoded>
			<wfw:commentRss>http://cauancabral.net/2008/12/12/3f-ferias-da-faculdade-finalmente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

