Ir ao conteúdo
  • Cadastre-se

Subtrair duas data hora no formato "0000-00-00 00:00:00"


manoelps

Posts recomendados

Preciso subtrair duas datas hora no formato:  2014-03-14 13:20:00   e 2014-03-14 13:10:00  o retorno deveria ser 10 minutos

 

outro exemplo: "2014-03-15 13:20:00" - "2014-03-14 13:10:00" = 1 dia 10 minutos

 

mas estou tomando uma coça de 10 á 0 e só consegui chegar nisso:

<?php$DataHoraAtual   = "2014-03-14 13:20:00";#date("Y-m-d h:m:s");$DataHoraChamado = "2014-03-14 13:10:00";#Divide a data do horario gerados pelo chamado$array = explode(' ',$DataHoraChamado);    #criamos uma matriz para armazenar as 2 partes da string	$DataChamado       =  $array[0];	$HorarioChamado    =  $array[1];	#Divide a data em ano mes dia$array2 = explode('-',$DataChamado);    #criamos uma matriz para armazenar as 3 partes da string    $Ano = $array2[0];	$Mes = $array2[1];	$Dia = $array2[2];	#Divide o horario em Hora Minuto Segundo$array3 = explode(':',$HorarioChamado);    #criamos uma matriz para armazenar as 3 partes da string    $Hora = $array3[0];	$Min  = $array3[1];	$Seg  = $array3[2];#############################################################Divide a data do horario gerados pelo chamado$array4 = explode(' ',$DataHoraAtual);    #criamos uma matriz para armazenar as 2 partes da string	$DataAtual       =  $array4[0];	$HorarioAtual    =  $array4[1];	#Divide a data em ano mes dia$array5 = explode('-',$DataAtual);    #criamos uma matriz para armazenar as 3 partes da string    $AnoAtual = $array5[0];	$MesAtual = $array5[1];	$DiaAtual = $array5[2];	#Divide o horario em Hora Minuto Segundo$array6 = explode(':',$HorarioAtual);    #criamos uma matriz para armazenar as 3 partes da string    $HoraAtual = $array6[0];	$MinAtual  = $array6[1];	$SegAtual  = $array6[2];	$nDataChamado = mktime($Hora, $Min, $Seg, $Mes,$Dia,$Ano);$nDataAtual   = mktime($HoraAtual, $MinAtual, $SegAtual, $MesAtual, $DiaAtual, $AnoAtual);echo date('d/m/Y H:i:s', $nDataAtual);echo "<p></p>";echo date('d/m/Y H:i:s', $nDataChamado);echo "<p></p>";echo $nHoraRestante = $nDataAtual - $nDataChamado;echo "<p></p>";echo date('d/m/Y', $nHoraRestante);?>

RESULTADO:

14/03/2014 13:20:00

 

14/03/2014 13:10:00

 

600

 

31/12/1969

 

 

Alguém possui alguma função que execute está substração ou alguma dica?

 

 

 

 

 

--------------------------------------------------------------

 

 

 

 

Senhores ... 

 

Depois de muito pesquisar achei estas informações e consegui o que eu queria:

 

http://www.diogomatheus.com.br/blog/php/trabalhando-com-datas-no-php/

 

Fica ai para o proximo que tiver o mesmo problema.

 

Usei a parte que calcula a diferença ao invés da substração.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Pra que isso tudo?
 

O próprio PHP se encarrega de fazer o cálculo, desde que você trabalhe com objetos DateTime.

Veja:
http://us3.php.net/manual/pt_BR/function.date-diff.php

http://stackoverflow.com/questions/10696654/get-total-time-difference-between-two-dates-using-php
 

Link para o comentário
Compartilhar em outros sites

É foi exatamente a função diff que eu usei, para quem venha á ter alguma dúvida segue o exemplo que usei.

<?php//acertar a hora do apachedate_default_timezone_set('America/Sao_Paulo');//nao exibir erro de formatação de caracteres nas palavrasecho '<meta http-equiv="Content-Type"  content="text/html; charset=UTF-8">'; $inicio = '07-05-2014 13:10:00';$fim    = '08-05-2014 13:20:00'; // Converte as duas datas para um objeto DateTime do PHP// PARA O PHP 5.3 OU SUPERIOR$inicio = DateTime::createFromFormat('d-m-Y H:i:s', $inicio); // PARA O PHP 5.2// $inicio = date_create_from_format('d/m/Y H:i:s', $inicio); $fim = DateTime::createFromFormat('d-m-Y H:i:s', $fim);// $fim = date_create_from_format('d/m/Y H:i:s', $fim); $diff = $inicio->diff($fim);var_dump($diff); //Mostra todo o array       $resultado  = "A diferença entre as datas é de ";        $resultado .= "{$diff->format('%d Dias')} ";        $resultado .= "{$diff->format('%m Meses')} ";        $resultado .= "{$diff->format('%y Anos')} ";        $resultado .= "{$diff->format('%h Horas')} ";        $resultado .= "{$diff->format('%i Minutos')} ";        $resultado .= "{$diff->format('%s Segundos')}.";echo $resultado;?>

Funcionou redondinho.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!