Como subtrair duas horas distintas?
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?
comentários (0)
suspender
Lista de Respostas:
10/08/2009 9:44am
(~15 anos atrás)
(~15 anos atrás)
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.
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.
13/08/2009 4:01pm
(~15 anos atrás)
(~15 anos atrás)
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.
Valeu, vou tentar aqui, obrigadão.
12/08/2009 12:28pm
(~15 anos atrás)
(~15 anos atrás)
Para manipular data/hora uma função interessante é
http://br2.php.net/manual/pt_BR/function.mktime.php
http://br2.php.net/manual/pt_BR/function.mktime.php
12/08/2009 6:24pm
(~15 anos atrás)
(~15 anos atrás)
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!
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!
13/08/2009 8:33am
(~15 anos atrás)
(~15 anos atrás)
Acho que ninguém mais leu a pergunta... Ou então eu quem entendi errado.