• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

chicosoft

Duvida Subtrair Horas

9 mensagens neste tópico

Boas, sou amador em PHP e pouco ou quase nada percebo comparando com algumas pessoas que andam por ai, a minha duvida é simples.

Tenho a variavel X que é lida de BD e tem o seguinte formato HH:MM:SS

Tenho a variavel Y que é lida de BD e tem o seguinte formato HH:MM:SS

O que eu quero é simples um variavel Z que seja a subtracção de Y com X

teoricamente devia ser qualquer coisa assim:

<php

$Z= $Y-$X

echo $Z

?>

O meu problema é que dá sempre Zero, que estou a fazer aqui mal?

Desde já deixo aqui o meu agradecimento

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os cálculos com tempos e datas podem ser feitos de variadas formas ;)

Mas coloco aqui uma possivel solução para o que queres fazer, que imagino que seja, saber o tempo que passou entre 2 horas diferentes, no mesmo dia.

<?
$h1= "08:23:00"; // hora mais alta
$h2= "08:20:00"; // hora mais baixa

$result= (strtotime($h1)- strtotime($h2))-3600; 
//o 3600 corresponde a 1h em segundos, necessário para
//que ao converter na linha de baixo apareça correctamente

echo  date("H:i:s", $res);
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela resposta

no teu codigo definiste as variaveis

<?
$h1= "08:23:00"; // hora mais alta
$h2= "08:20:00"; // hora mais baixa

Ora eu não quero definir nada, ele vai ler as horas a um campo na base de dados, a tua solução vai funcionar na mesma não?

Tambem não entendi a parte da variavel $res desta linha:



echo  date("H:i:s", $res);

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tal como colocas-te na base de dados esta definido como HH:MM:SS

deduzo que a horas apareçam de 0 a 24 deve funcionar.

Apenas uma correcção no meu codigo a ultima linha é:

echo  date("H:i:s", $result); e não echo  date("H:i:s", $res);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já estou a conseguir fazer a conta, mas não com os valores que vêm da BD... Vou partir um pouco mais  a cabeça  :wallbash:

já agora, é possivel se na BD estiver a data assim? DD-MM-YYYY HH:MM:SS

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em relação a ligares isso a uma base de dados aqui vai o exemplo:

<?
$dbconn = mysql_connect("localhost","username","password");
mysql_select_db("basededados",$dbconn);

$sql = "select hora_inicio, hora_fim from tabela where id='13456' "; 
$query=mysql_query($sql);

$result_query=mysql_fetch_array($query);

$h1= $result_query["hora_fim"]; // hora mais alta
$h2= $result_query["hora_inicio"]; // hora mais baixa

$result= (strtotime($h1)- strtotime($h2))-3600; 

echo  date("H:i:s", $result);
?>

Isto é para calcular diferença entre horas, (horas,minutos,segundos).

Se o que pretendes é calcular a diferença entre datas, e horas (ambos) então ai terá de ser outra a forma de fazer.

Explica melhor o que queres, com exemplo dos campos que tens (os valores) para ser mais facil ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como te disse, pouco ou nada percebo de PHP :confused:

uso o PHP maker para me fazer as coisas simples que quero... mas agora queria simplesmente subtrair as variaveis, se quiseres posso colocar aqui o codigo do PHP..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha pergunta é simples :)

Queres subtrair datas ou horas? ou ambos?

Que situação queres fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora