+2

Como subtrair duas horas distintas?

criado por Thomas Yorke em 08/08/2009 1:36pm
Por exemplo, com a hora no formato MySQL (hh:mm:ss), gostaria de subtrair 02:50:35 horas de 35:00:00 horas. Tem como subtrair apartir de datas maiores que 24 horas?

Lista de Respostas:

+1
10/08/2009 9:44am
(~14 anos atrás)
a respondeu:
Apesar de existir (creio eu), nunca ouvi falar de nada pronto pra trabalhar com horas sem ser datas, como nesse caso. Então, minha dica então se torna uma questão de trabalhar com algoritmos.

Tente trabalhar transformando tudo para segundos então faça as operações que quizer e transforme novamente para horas.

Por ex.:
35 horas = 35 * 60 * 60 segundos;
02:50:35 horas = (2 * 60 * 60) + (50 * 60) + 35 segundos

Valor em segundos = 115765;

Subtraia e transforme novamente para horas. Um pouquinho de Álgebra A básica ajuda nessa hora! ;)

Horas: (115765 / 60 * 60) truncado = 32 horas
Minutos: (115765 - (32 * 60 * 60)) / 60 truncado = 9 minutos
Segundos: (o resto) (115765 - (32 * 60 * 60) - (9 * 60)) = 25 segundos


Boa sorte.

+1
13/08/2009 4:01pm
(~14 anos atrás)
Thomas Yorke respondeu:
Acredito que você foi o único quem entendeu. São horas acima de 24 horas... Se você usar as funções padrões do PHP fica tudo errado.
Valeu, vou tentar aqui, obrigadão.

-1
12/08/2009 12:28pm
(~14 anos atrás)
Vanessa Schissato respondeu:
Para manipular data/hora uma função interessante é
http://br2.php.net/manual/pt_BR/function.mktime.php

-1
12/08/2009 6:24pm
(~14 anos atrás)
Túlio Spuri respondeu:
Se você usasse time(), que retorna a hora desde a era Unix, é medida em segundos, seria bem fácil.

Tipo se você tem uma data assim em segundos e quer subtrair duas horas, então pegue esse valor e diminua de 120 segundos.

Ok, agora tenho um amontoado de números que são segundos desde a Era Unix, como vou aproveitar isso e mostrar uma data?

Logo use o comando localtime(), que retorna uma matriz. Para pegar os valores da matriz use:

* "tm_sec" - Segundos
* "tm_min" - Minutos
* "tm_hour" - Hora
* "tm_mday" - Dia do mês Meses são de 0 (Jan) à 11 (Dez) e dias da semana são de 0 (Dom) à 6 (Sáb).
* "tm_mon" - Mês do ano, começa com 0 para Janeiro
* "tm_year" - Anos desde 1900
* "tm_wday" - Dia da semana
* "tm_yday" - Dia do ano
* "tm_isdst" - Se está em horário de verão

Espero ter ajudado!

-2
13/08/2009 8:33am
(~14 anos atrás)
a respondeu:
Acho que ninguém mais leu a pergunta... Ou então eu quem entendi errado.

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)