Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

César Olaves

[Resolvido] Usando Datediff

Recommended Posts

Galera... Estou tentando usar o datediff numa formula aqui... Mas não estou conseguindo....

 

Possuo as variaveis

 

$departure = $_POST["departure"];

$arrival = $_POST["arrival"];

 

Minha idéia era fazer o calculo do tempo final - o tempo inicial, pra depois inserir o resultado no sql...

 

Então fiz essas duas opcoes de formula, mas nao deu mto certo...

 

$spent_transfer_time = datediff ( "$arrival", "$departure");

 

Gostaria de mostrar a diferença de duas datas no formato HH:MM tem como ??? Pergunto isso pois 99% dos resultados serão em hora e minutos....

 

Alguem poderia me ajudar nisso ???

 

Grato desde já....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explica melhor, qual são os formatos de $departure ew $arrival.

 

São formatos de AAAA:MM:DD HH:MM ou de apenas HH:MM?

 

se for o primeiro caso, acho que a melhor forma é você fazer por date_sub .

 

No segundo caso, tb dá para fazer por date_sub ou até com esse escript

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, acho que deve existir alguma forma bem mais facil, mas de qq forma sei assim:

 

$datetime1 = date_create('2009-10-14 15:00');
$datetime2 = date_create('2009-10-13 18:00');
$interval = date_diff($datetime2, $datetime1);


$dias = $interval->format('%d');
$minutos = $interval->format('%I');
$horas = $interval->format('%H');
$horas = $horas+($dias*24);

$horas=str_pad($horas, 2, "0", STR_PAD_LEFT);


echo "$horas:$minutos";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho pois apesar de a funcionalidade estar agora focada no modelo Orientado a Objetos, date_diff(0 deveria estar disponível como alias para DateTime::diff()

 

De qualquer forma, experimente o modo OO:

 

$time = new DateTime( '2009-10-14 15:00' );
$diff = $time -> diff( new DateTime( '2009-10-13 18:00' ) );

list( $days, $minutes, $hours ) = array( $diff -> d, $diff -> m, $diff -> h );

$hours += $days * 24;

var_dump( str_pad( $hours, 2, '0', STR_PAD_LEFT ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vixi, já nem sei mais o que pensar hehehehe

 

Agora dá a seguinte mensagem de erro: Fatal error: Call to undefined method DateTime::diff() in

 

Na linha que se refere a: $diff = $time -> diff( new DateTime( '2009-10-13 18:00' ) );

 

 

;-/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em outras palavras, não funciona no seu , é serviço de hospedagem, ou você consegue atualizar o php?

 

se preciso, achei essa função carinpando na net:

 

<?php

$data1 = '2006-07-22 12:27:00';
$data2 = '2006-07-30 18:00:00';

$unix_data1 = strtotime($data1);
$unix_data2 = strtotime($data2);

$nHoras   = ($unix_data2 - $unix_data1) / 3600;
$nMinutos = (($unix_data2 - $unix_data1) % 3600) / 60;

printf('%02d:%02d', $nHoras, $nMinutos);

?>

 

Achei aqui

 

não testei pois estou longe de um ambiente de testes, mas pelo que vi da certo, com a ressalva que a data2 tem que ser maiot que a 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mazzaaaaaa, com esse ultimo codigo funcionou... 100%...

 

Mas de qualquer forma vou providenciar a atualização do PHP, vai que no futuro preciso de alguma coisa que não rode nessa versão que tenho heheheheh

 

Galera, de coração, brigado mesmo pela ajuda !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.