← PHP

Formatar Datetime

Lida 6477 vezes

Offline

Pedro Magalhães 
Membro
Mensagens 397 Gostos 0
Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts

Boas!

Tenho uma pergunta um bocado noob. Mas aqui vai...

Preciso formatar o valor de um campo numa tabela mysql do tipo "datetime".
O valor que é devolvido é algo como "2010-07-05 12:11:00".
No entanto preciso de separar a data e tempo em variáveis distintas. Tipo $data e $hora.

Alguém me pode orientar? Obrigado
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Bem, se apenas pretendes separar os valores e não formatar a data/hora de acordo determinados parametros, podes simplesmente fazer o seguinte.

Código: (php) [Seleccione]
<?php

$datetime 
'2010-07-05 12:11:00';

list( 
$date$time ) = explode' '$datetime );

echo 
'<p>Data: ' $date '</p>';

echo 
'<p>Hora: ' $time '</p>';

?>
Offline

Pedro Lopes 
Beta tester
Mensagens 3568 Gostos 18
Feedback +6

Troféus totais: 32
Trófeus: (Ver todos)
Level 6 Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

Podes usar a função date() do PHP.

Código: [Seleccione]
echo date("j F, Y", "2010-07-05 12:11:00");
Offline

cpdesign 
Membro
Mensagens 235 Gostos 1
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Não percebo nada de PHP, mas acho que podes usar

Código: [Seleccione]
echo $date->format('d-m-Y');
echo $time->format('H:i:s');

ou ainda

Código: [Seleccione]
echo date_format($date, 'd-m-Y');
echo date_format($date, 'H:i:s');
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Sugeri a forma mais rápida, porque pelo que vejo ele não precisa de formatar a data, apenas separar a data da hora em duas variáveis.


Podes usar a função date() do PHP.

Código: [Seleccione]
echo date("j F, Y", "2010-07-05 12:11:00");

Como tens não funciona. No segundo parâmetro de 'date' ele teria que usar 'strtotime()', dessa forma sim, funcionaria de maneira a que ele pudesse formatar a data da maneira que quisesse.



Não percebo nada de PHP, mas acho que podes usar

Código: [Seleccione]
echo $date->format('d-m-Y');
echo $time->format('H:i:s');

ou ainda

Código: [Seleccione]
echo date_format($date, 'd-m-Y');
echo date_format($date, 'H:i:s');


Estás quase lá, no primeiro exemplo não funcionaria sem iniciares o objecto e no segundo não funcionaria sem usares a função date_create()



Offline

Pedro Magalhães 
Membro
Mensagens 397 Gostos 0
Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts

Obrigado a todos pelas dicas.

Na verdade o que queria era isto: 09:40:00 | Segunda-feira, 05 de Julho de 2010
Hora separado da data, e data em português por extenso.

Código: [Seleccione]

$datetime = $fetch_noticias['datetime_data'];
list ($data, $hora) = explode(' ', $datetime);
$xpto = formata_data_extenso($data);

<?php

function formata_data_extenso($strDate){

$arrDaysOfWeek = array('Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado');

$arrMonthsOfYear = array(=> 'Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');

$intDayOfWeek date('w',strtotime($strDate));

$intDayOfMonth date('d',strtotime($strDate));

$intMonthOfYear date('n',strtotime($strDate));

$intYear date('Y',strtotime($strDate));

return $arrDaysOfWeek[$intDayOfWeek] . ', ' $intDayOfMonth ' de ' $arrMonthsOfYear[$intMonthOfYear] . ' de ' $intYear;

}
?>


Resultado: 09:40:00 | Segunda-feira, 05 de Julho de 2010

Offline

Pedro Lopes 
Beta tester
Mensagens 3568 Gostos 18
Feedback +6

Troféus totais: 32
Trófeus: (Ver todos)
Level 6 Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

Tens razão IceBurn. :P
Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Tens razão IceBurn. :P

É raro, mas às vezes tenho mesmo! :mrgreen:



Obrigado a todos pelas dicas.

Na verdade o que queria era isto: 09:40:00 | Segunda-feira, 05 de Julho de 2010
Hora separado da data, e data em português por extenso.

Código: [Seleccione]

$datetime = $fetch_noticias['datetime_data'];
list ($data, $hora) = explode(' ', $datetime);
$xpto = formata_data_extenso($data);

<?php

function formata_data_extenso($strDate){

$arrDaysOfWeek = array('Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado');

$arrMonthsOfYear = array(=> 'Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');

$intDayOfWeek date('w',strtotime($strDate));

$intDayOfMonth date('d',strtotime($strDate));

$intMonthOfYear date('n',strtotime($strDate));

$intYear date('Y',strtotime($strDate));

return $arrDaysOfWeek[$intDayOfWeek] . ', ' $intDayOfMonth ' de ' $arrMonthsOfYear[$intMonthOfYear] . ' de ' $intYear;

}
?>


Resultado: 09:40:00 | Segunda-feira, 05 de Julho de 2010


De nada. Mas se querias algo mais complexo deverias ter dito logo, porque assim não deu luta...! Estou na brincadeira, ainda bem que conseguiste o que querias. :)