Ir para conteúdo
Fórum Script Brasil
  • 0

Calculando horas alternadas com PHP


atilio.cd

Pergunta

Boa tarde pessoal, já quebrei a cabeça e pesquisei bastante sobre, infelizmente não encontrei uma resposta que satisfaça minha necessidade, eis meu problema, espero que alguém ajude..

- Tenho um rastreador que envia dados de localização, horários e status (LIGADO ou DESLIGADO), preciso calcular quantas horas ele esteve ligado, porém as informações em minha table estão dispostas da seguinte maneira:

HORARIO           |||        STATUS
04-11-2016-12:16:04||||LIGADO

04-11-2016-12:19:04||||LIGADO

(INTERVALO COM CARRO DESLIGADO, CHEIO DE "DESLIGADO" DESSES EMBAIXO)

04-11-2016-14:02:10||||DESLIGADO

04-11-2016-14:07:10||||DESLIGADO

04-11-2016-14:12:57||||LIGADO

04-11-2016-14:15:57||||LIGADO

04-11-2016-14:18:57||||LIGADO

04-11-2016-14:21:57||||LIGADO

04-11-2016-14:25:57||||DESLIGADO

04-11-2016-14:28:57||||DESLIGADO

04-11-2016-14:02:10||||DESLIGADO

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

UPDATE: Consegui de alguma forma primitiva calcular aproximadamente as horas, segue como procedi, espero que alguém possa me guiar daqui pra frente.

//Estrutura while coletando dados do result do banco de dados
//Ex.: tempo = "2016-11-08 12:56:59";
$tempo = $row['devicetime'];
//Ex.: attributes = "{"alarm":true,"ignition":true({[AQUI PODE SER 'TRUE' OU 'FALSE']}),"status":70,"power":6,"gsm":4,"index":568,"ip":"192.168.1.1"}";
$attributes = $row['attributes'];

//'True' identifica que o motor está ligado
if (preg_match('/ignition":true/',$attributes)){

//Estrutura IF para não calcular horas repetidas várias vezes	
if ($hora1 != $hora1){
$hora1 = substr($tempo, 11, -6);
$hora1 = ($hora1 * 3600);
} else{
	$hora1 = "0";
}
$minutos1 = substr($tempo, 14, -3);
$minutos1 = ($minutos1 * 60);
$segundos1 = substr($tempo, 17);
$segundosFim1 = ($minutos1 + $segundos1 + $hora1);
$container = $container + $segundosFim1;

} else {
	$hora1 = "0";
	$minutos1 = "0";
	$segundos1 = "0";
}

Espero que alguém jogue uma luz sobre este código ou me mostre um caminho melhor de fazê-lo. Grato desde já aos amigos do fórum, abs.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...