Olá! Saturday, 12 de October de 2024.



Dicas CódigoFonte.net
Thursday, 25 de March de 2004

Formatando datas em PHP

Bem, muitas pessoas perguntam como fazer para converter certas "datas" para o "humano" (de 1042752929 para 1/jan/1970). No código a seguir, teremos várias maneiras de conversão.

Confiram:

OBS:
O que é TIMESTAMP do Unix?
É a contagem, em segundos, desde o dia 1 de janeiro de 1970 00:00:00 GMT (os segundos que se passaram até momento desde as ZERO horas do dia 1 de janeiro de 1970)
Exemplo:
timestamp = 1042752929 => passaram-se 1042752929 segundos desde 1/jan/1970 00horas 00min 00 seg


30/12/2003 */ function mysql_date_para_humano($dt) { if ($dt=="0000-00-00") return ''; $yr=strval(substr($dt,0,4)); $mo=strval(substr($dt,5,2)); $da=strval(substr($dt,8,2)); return date("d/m/Y", mktime (0,0,0,$mo,$da,$yr)); } /* Converte formato do DATETIME do MySQL para um compreensível para os homens 2003-12-30 23:30:59 -> 30/12/2003 23:30:59 */ function mysql_datetime_para_humano($dt) { $yr=strval(substr($dt,0,4)); $mo=strval(substr($dt,5,2)); $da=strval(substr($dt,8,2)); $hr=strval(substr($dt,11,2)); $mi=strval(substr($dt,14,2)); return date("d/m/Y H:i:s", mktime ($hr,$mi,0,$mo,$da,$yr)); } /* Converte formato TIMESTAMP do MySQL para o humano 20031230233029 -> 30/12/2003 23:30:59 */ function mysql_timestamp_para_humano($dt) { $yr=strval(substr($dt,0,4)); $mo=strval(substr($dt,4,2)); $da=strval(substr($dt,6,2)); $hr=strval(substr($dt,8,2)); $mi=strval(substr($dt,10,2)); $se=strval(substr($dt,12,2)); return date("d/m/Y H:i:s", mktime ($hr,$mi,$se,$mo,$da,$yr)); } /* Converte formato TIMESTAMP do Unix para o humano 1072834230 -> 30/12/2003 23:30:59 */ function timestamp_para_humano($ts) { $d=getdate($ts); $yr=$d["year"]; $mo=$d["mon"]; $da=$d["mday"]; $hr=$d["hours"]; $mi=$d["minutes"]; $se=$d["seconds"]; return date("d/m/Y H:i:s", mktime($hr,$mi,$se,$mo,$da,$yr)); } /* Converte o TIMESTAMP do Unix para o TIMESTAMP do MySQL 1072834230 -> 20031230233029 */ function timestamp_para_mysql_timestamp($ts) { $d=getdate($ts); $yr=$d["year"]; $mo=$d["mon"]; $da=$d["mday"]; $hr=$d["hours"]; $mi=$d["minutes"]; $se=$d["seconds"]; return sprintf("%04d%02d%02d%02d%02d%02d",$yr,$mo,$da,$hr,$mi,$se); } /* Converte o TIMESTAMP do Unix para o DATE do MySQL 1072834230 -> 2003-12-23 */ function timestamp_para_mysql_date($ts) { $d=getdate($ts); $yr=$d["year"]; $mo=$d["mon"]; $da=$d["mday"]; return sprintf("%04d-%02d-%02d",$yr,$mo,$da); } /* Converte o TIMESTAMP do Unix para o DATETIME do MySQL 1072834230 -> 2003-12-23 23:30:59 */ function timestamp_para_mysql_datetime($ts) { $d=getdate($ts); $yr=$d["year"]; $mo=$d["mon"]; $da=$d["mday"]; $hr=$d["hours"]; $mi=$d["minutes"]; $se=$d["seconds"]; return sprintf("%04d-%02d-%02d %02d:%02d:%02d",$yr,$mo,$da,$hr,$mi,$se); } /* Converte formato TIMESTAMP do MySQL para o TIMESTAMP do Unix 20031230233029 -> 1072834230 */ function mysql_timestamp_para_timestamp($dt) { $yr=strval(substr($dt,0,4)); $mo=strval(substr($dt,4,2)); $da=strval(substr($dt,6,2)); $hr=strval(substr($dt,8,2)); $mi=strval(substr($dt,10,2)); $se=strval(substr($dt,10,2)); return mktime($hr,$mi,$se,$mo,$da,$yr); } /* Converte formato DATETIME do MySQL para o TIMESTAMP do Unix 2003-12-30 23:30:59 -> 1072834230 */ function mysql_datetime_para_timestamp($dt) { $yr=strval(substr($dt,0,4)); $mo=strval(substr($dt,5,2)); $da=strval(substr($dt,8,2)); $hr=strval(substr($dt,11,2)); $mi=strval(substr($dt,14,2)); $se=strval(substr($dt,17,2)); return mktime($hr,$mi,$se,$mo,$da,$yr); } /* pegar um valor de data (em um formato qualquer) enviado por um usuário e transformar no formato DATE do MySQL */ function mysql_cvdate($s) { return timestamp_para_mysql_date(cvdate($s)); } /* Calcula a diferença de tempo entre os valores $comeco e $fim e retorno em português literal a quantidade de tempo da diferença entre os valores. nota: ambos os valores de entrada devem estar no formato timstamp UNIX: */ function timeleft($comeco,$fim) { $dif=$fim-$comeco; $years=intval($dif/(60*60*24*365)); $dif=$dif-($years*(60*60*24*365)); $months=intval($dif/(60*60*24*30)); $dif=$dif-($months*(60*60*24*30)); $weeks=intval($dif/(60*60*24*7)); $dif=$dif-($weeks*(60*60*24*7)); $days=intval($dif/(60*60*24)); $dif=$dif-($days*(60*60*24)); $hours=intval($dif/(60*60)); $dif=$dif-($hours*(60*60)); $minutes=intval($dif/(60)); $seconds=$dif-($minutes*60); $s=''; if ($years<>0) $s.= $years." anos "; if ($months<>0) $s.= $months." meses "; if ($weeks<>0) $s.= $weeks.' semanas '; if ($days<>0) $s.= $days.' dias '; if ($hours<>0) $s.= $hours.' horas '; if ($minutes<>0) $s.= $minutes.' minutos '; if ($seconds<>0) $s.= $seconds.' segundos '; return $s; } /* Converte uma data humana para o formato TIMESTAMP do Unix, retorna zero se houver erro. Suporta delimitadores de datas como traço, ponto, barra e espaço; nomes de mês, ano com apenas 2 digitos Exemplo de entradas que a função aceita: 30-12-2003 23:30:59 30-12-2003 30 12 2003 30.12.03 30/dez/2003 30 dezembro 03 30 de dezembro de 03 30 de dezembro de 2003 30, dezembro de 2003 */ function cvdate($s) { $delimiter=''; $s = str_replace(' de ','/',strtolower($s)); if (strpos($s,'-')>0) $delimiter='-'; elseif (strpos($s,'/')>0) $delimiter='/'; elseif (strpos($s,' ')>0) $delimiter=' '; elseif (strpos($s,'.')>0) $delimiter='.'; $s = str_replace(', ',$delimiter,$s); if (empty($delimiter)) return 0; $p1=strpos($s,$delimiter); $p2=strpos($s,$delimiter,$p1+1); $a=substr($s,$p2+1); $m=substr($s,$p1+1,$p2-($p1+1)); $d=substr($s,0,$p1); if (intval($a)<100) { $a=(intval($a)>69)? strval(1900+intval($a)) : strval(2000+intval($a)); } if (intval($m)==0) // contém mês em extenso { return cvdate_portugues($d,$m,$a); }else{ return cvdate_numerico($d,$m,$a); } } /* função auxiliar do cvdate */ function cvdate_portugues($d,$m,$y) { $d2=0; $m2=0; $y2=0; $d2=intval($d); $m=strtolower($m); switch(substr($m,0,3)) { case 'jan': $m2=1; break; case 'fev': $m2=2; break; case 'mar': $m2=3; break; case 'abr': $m2=4; break; case 'mai': $m2=5; break; case 'jun': $m2=6; break; case 'jul': $m2=7; break; case 'ago': $m2=8; break; case 'set': $m2=9; break; case 'out': $m2=10; break; case 'nov': $m2=11; break; case 'dez': $m2=12; break; } $y2=intval($y); if (($d2==0)($m2==0)($y2==0)) return 0; return mktime(0,0,0,$m2,$d2,$y2); } /* função auxiliar do cvdate */ function cvdate_numerico($d,$m,$y) { $d2=0; $m2=0; $y2=0; $d2=intval($d); $m2=intval($m); $y2=intval($y); if (($d2==0)($m2==0)($y2==0)) return 0; return mktime(0,0,0,$m2,$d2,$y2); } ?>

Até mais.

Comentários do artigo [Novo comentário]

lucas.exe - 27 de April de 2010 - 12:07
Agora ficou mais facil com funções nativas:

$timestamp=strtotime($data_humana);

$humano = date("'d-m-Y H:i:s'", $timestamp);
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010