Problema com Formatação de Campo DateTime

Estou perdendo um tempo mostruoso para tentar fazer algo simples, mas não estou conseguindo, por isso venho mais uma vez recorrer a ajuda dos feras do forum.

Tenho na minha tabela um campo do tipo DateTime, e preciso pegar essa informação e formatar de outra forma para outra aplicação, mas quando faço isso estou recebendo uma mensagem de erro.

Estou fazendo desta forma :

$agendamento = {Agendamento};
$date = date_create($agendamento);
$schedule = date_format($date, 'Y-m-d\TH:i:s');

Mas quando rodo a aplicação recebo a mensagem:

   date_format() expects parameter 1 to be DateTime, boolean given

Onde diabos estou errando ?

Já tentei mudar o campo para o tipo TimeStamp mas não resolveu.

Mude esse trecho -> $schedule = date_format($date, ‘Y-m-d\TH:i:s’);

Para -> $schedule = date_format($date, “Y-m-d H:i:s”);

Marcelo,

Não é isso meu amigo, até por que desse jeito eu não teria a formatação da forma que preciso.

Tentei fazer de outro jeito:

$agenda = {Agendamento};
$timestamp = strtotime($agenda);
$ano = date('Y', $timestamp); 
$mes = date('m', $timestamp); 
$dia = date('d', $timestamp); 
$hor = date('H', $timestamp); 
$min = date('i', $timestamp); 
$seg = date('s', $timestamp); 

$date = new DateTime();
$date->setDate($ano,$mes,$dia);
$date->setTime($hor,$min,$seg);
$schedule = $date->format("Y-m-d\TH:i:s");

Aí eu não tenho mais a mensagem de erro, em compensação a data que está sendo mostrada não tem nada a ver com a data que está no banco de dados, em vez de aparecer “2015/04/30T15:00:00” está aparecendo “1969/12/31T21:00:00”.

Por favor se alguém puder me dizer onde é que estou cometendo o erro eu agradeço, por que estou praticamente o dia inteiro em cima dessa bronca. :frowning:

Bom Ronaldo pra descargo de consciência fiz um teste no Blank com base no teu código:

[code] $agenda = “2015-04-30 15:00:00”;
$timestamp = strtotime($agenda);
$ano = date(‘Y’, $timestamp);
$mes = date(‘m’, $timestamp);
$dia = date(‘d’, $timestamp);
$hor = date(‘H’, $timestamp);
$min = date(‘i’, $timestamp);
$seg = date(‘s’, $timestamp);

$date = new DateTime();
$date->setDate($ano,$mes,$dia);
$date->setTime($hor,$min,$seg);
$schedule = $date->format(“Y-m-d\TH:i:s”);

echo $schedule;[/code]

E o resultado retornou: “2015-04-30T15:00:00”

Dá uma verificada meu velho no que você fez aí, fiz um pequeno teste e a princípio está certo.

Faça tudo via php com subtr($agenda,posição inicial desejada,posição final desejada);
Ex: $schedule = substr($agenda,0,4)."/".substr($agenda,5,2) … e assim por diante, coloca isso no onLoad ou onRecord e vai pegando as posições corretas com echo $schedule…

Marcelo,

Pois é meu caro, a bronca é justamente quando a informação vem do MySQL através do campo {Agendamento}, que é um campo DateTime (já tentei também mudar para TimeStamp).

Veja meu post acima e tenta com substr

Dá uma verificada nesse campo {agendamento} se o Tipo de Dado está como Data e Hora, ou recrie este campo novamente. No MySQL acredito que não seja o erro até pq eu uso pra exibir data e hora como TimeStamp.

Rodrigo,

Usar o substr na variável $agenda volta as informações erradas, ou seja, o problema está na hora que eu atribuo o conteúdo do campo {Agendamento} a variável $agenda. Não sei se tenho que fazer alguma conversão antes de atribuir o valor.

Esquentei a cabeça demais com isso hoje, agora vou tomar uma dose pra ver se clareia as ideias, amanhã é outro dia, hoje foi péssima a produtividade por conta dessa bronca. :frowning:

Meus caros,

Só consegui resolver separando os campos, em vez de usar um campo DateTime ou Timestamp, tive que trabalhar com um campo para Data e outro separado para a Hora, aí funcionou sem problemas.

Deixo a tópico em aberto por que gostaria de ter uma solução para quando for imprescindível trabalhar com campos Datetime ou Timestamp.

Bom final de semana a todos e obrigado especial aos amigos Marcelo e Rodrigo.