Calculo de horas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Calculo de horas

Mensagem por rubens »

Gente..

eu já vi este tópico aqui no fórum... mas pesquisei e nao me retorna nada com calculo de horas.. na realidade retorna, mas retorna todos os tópicos.. bom o que preciso é o seguinte...

Preciso calcular o tempo corrido da hora em que um onibus saiu e da hora que chegou...
HoraSai := Time() // "08:20:10"
HoraRet := Time() // "08:40:00"
Tempo := HoraRet - HoraSai
Tempo = "08:20:1008:40:00"

Alguem sabe como fazer ???
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Olá,

Código: Selecionar todos

nInicio := timetosec(time())
nFim := timetosec(time())
nTempo=sectotime(nFim-nInicio)
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Rubens, o que vc procura está em
https://pctoledo.org/forum/viewto ... =intervalo

Nessa minha função, vc pode até calcular o tempo entre horas de dias diferentes...
Avatar do usuário
miracle
Usuário Nível 3
Usuário Nível 3
Mensagens: 117
Registrado em: 14 Jun 2007 16:28
Localização: Sao Paulo SP

Mensagem por miracle »

Você também pode tentar assim:

Código: Selecionar todos

nHORAINI = SECS(cHORAINI)  //CONVERTE HORAS EM SEGUNDOS
nHORAFIM = SECS(cHORAFIM)
nHORATOT = nHORAFIM - nHORAINI  //FAZ SUBTRACAO DOS SEGUNDOS
cHORATOT = TSTRING(nHORATOT)  //CONVERTE SEGUNDOS EM HORAS
Sendo as funções SECS() E TSTRING()

Código: Selecionar todos

* CONVERTE HORAS EM SEGUNDOS
FUNCTION Secs
   PARAMETERS cl_time
   RETURN VAL(       cl_time   ) * 3600 +;
          VAL(SUBSTR(cl_time,4)) *   60

* CONVERTE SEGUNDOS EM HORAS
FUNCTION Tstring
   PARAMETERS cl_secs
   RETURN StrZero(INT(Mod(cl_secs/3600, 24)), 2, 0) + ":" +;
          StrZero(INT(Mod(cl_secs/  60, 60)), 2, 0)
Espero ter ajudado :|<
Clipper 5.2e + DBFCDX + Exospace 1.0g
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Leonardo...

onde encontro estas funcoes:
TIMETOSEC()
SECTOTIME()

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

CATools.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

Simplifica a coisa:

inicio = TIME()
final = TIME()

tempo = ELAPTIME(inicio,final)
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mensagem por rubens »

Fechou....

Resolveu da forma mais simples possível..

Valeu...

obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Resolveu da forma mais simples possível..
Rubens, se deu certo, beleza!

Mas, fica a ressalva (ou sugestão): nem sempre a "forma mais simples possível é a melhor". É como o Fulano que faz tudo MONO-usuário, pq avalia que é a forma mais simples e imagina que o cliente nunca vai querer aquilo em rede...

Mas aí um dia o cliente pede (pq era necessário) e aí o Fulano se ferra.

Essas "armadilhas" são comuns!
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

Eolo escreveu: Essas "armadilhas" são comuns!
Não entendi... O cara queria um controle simples, o comando é simples...
rubens escreveu: Preciso calcular o tempo corrido da hora em que um onibus saiu e da hora que chegou...
Você gosta de ajudar, colabora bastante, mas quando a coisa é simples, comandos simples....
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Não entendi... Você gosta de ajudar, colabora bastante, mas quando a coisa é simples, comandos simples....
Vamos ao caso concreto: a demanda é calcular tempo entre duas horas, certo? Fácil! É só pegar as duas horas e calcular o intervalo, certo? O que poderia dar errado nisso? Respondo: "E eu sei lá!..."

E, exatamente por não saber e por querer ir dormir tranquilo, eu afirmo: "hoje, é só calcular o intervalo entre dois horários no mesmo dia mas, de repente, o cliente aparece com dias diferentes, blablabla..., sei lá por que razões". Então, por que não SIMPLESmente matar a coisa num tiro só? Com o meu exemplo, nunca mais se pensa em manutenção do sistema... Quer mais simples que isso?

(é o exemplo que dei da REDE. Uai, se o cliente, hoje, não tem rede, pra quê fazer em rede??? Mas e se três meses depois o cliente sugere "Então, tava pensando em colocar um outro computador no escritório...", como fica?)
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

De certa forma você está corretíssimo. Quando digo de certa forma é porque não dá pra fazer um sistema completo prevendo que um dia ele vá ser usado em rede, até porque há tantas "previsões" a fazer que o programa jamais ficaria pronto.

Concordo com a forma de matar o assunto da forma mais completa, só que às vezes - e isso acontece até comigo que já fuço o clipper há alguns muitos anos - o conhecimento do cidadão não é tão amplo mesmo nos comandos simples, o que gera mais dúvidas.

É apenas uma preocupação minha analisar "pela pergunta" quanto o cidadão tem de conhecimento, para uma resposta mais proveitosa no momento. Se hover mais dúvidas, novas perguntas virão.

É claro que você tem demonstrado que não há problema nenhum em dirimi-las, o que é louvável de sua parte.

Vamos em frente!
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Acho que pela natureza do problema apresentado pelo Rubens, realmente não seria o caso de ter algo tão completo. Trata-se de horário escolar. Um aluno não vai entrar num dia e sair em outro. Portanto, a lógica do mais simples torna melhor a solução mais simples. De qualquer forma, acho uma boa idéia "recortar" o código do Eolo pra guardar numa LIB, pra uma outra ocasião. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
diogenes_varela
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 04 Nov 2006 19:33
Localização: Brasília - DF

Mensagem por diogenes_varela »

acho uma boa idéia "recortar" o código do Eolo pra guardar numa LIB, pra uma outra ocasião.
Você como sempre genial nas soluções...
Os computadores não sabem o que fazem. Nós, na maioria das vezes, também não...

E disse ao Programador: "Todos os teus programas terão erros e irás corrigi-los até ao fim dos teus dias". Gen. 1:9
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Diógenes e Maligno, talvez eu tenha me expressado mal.

Eu disse:
(a) Rubens, se deu certo, beleza!
(b) Mas, fica a ressalva (ou sugestão): nem sempre a "forma mais simples possível é a melhor". É como...
Eu não quis dizer que o Rubens estava errado nem que seria melhor ele usar uma função mais abrangente. Eu disse: (a) pro Rubens usar a solução simples que resolveu o problema, mas (b) que atentasse para o cuidado a tomar com soluções "simples", genericamente falando, que via de regra representam armadilhas futuras pra gente mesmo...

Mas talvez eu tenha me expressado mal, talvez devesse ter explicado melhor o meu ponto de vista.

O caso de Rede x Mono é perfeito como exemplo: programar para Mono é muito mais simples, mas representa sim um problema real 'empurrado' pro futuro... Ao contrário, programar para Rede dá trabalho, mas se vc adotar isso como padrão, todos os seus programa vão funcionar tanto em Rede como em Mono, então esse problema vc risca permanentemente da lista e sua vida fica mais 'simples'... Este é o meu ponto! :-)
Responder