converte campo numerico em horas
Moderador: Moderadores
-
wandersonwfs
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 16 Set 2009 08:23
- Localização: minas
converte campo numerico em horas
Boa Tarde,
estou precisando converter uma variavel numerico em um campo hora
a soma da minha variavel esta dando 5,73 e o correto calculando em horas serias 7:16:00,
como faço isso em clipper?
estou precisando converter uma variavel numerico em um campo hora
a soma da minha variavel esta dando 5,73 e o correto calculando em horas serias 7:16:00,
como faço isso em clipper?
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
converte campo numerico em horas
Olá!
Seja bem-vindo ao fórum Wanderson!
Seja bem-vindo ao fórum Wanderson!
O que foi somado para obter 5,73? Forneça mais detalhes. Não vejo como associar 5,73 com 7:16:00.wandersonwfs escreveu:a soma da minha variavel esta dando 5,73 e o correto calculando em horas serias 7:16:00
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
wandersonwfs
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 16 Set 2009 08:23
- Localização: minas
converte campo numerico em horas
Alessandre,
Meu relatorio esta tendo os seguintes valores:
0,16 minutos
0,16 minutos
0,20 minutos
0,17 minutos
0,17 minutos
0,14 minutos
0,14 minutos
0,10 minutos
0,07 minutos
0,06 minutos
0,12 minutos
0,11 minutos
0,14 minutos
0,08 minutos
0,07 minutos
0,24 minutos
1,13 1hora e 13 minutos
2,39 2 horas e 13 minutos
-----
5,56 errado correto seria 07:16:00
Meu relatorio esta tendo os seguintes valores:
0,16 minutos
0,16 minutos
0,20 minutos
0,17 minutos
0,17 minutos
0,14 minutos
0,14 minutos
0,10 minutos
0,07 minutos
0,06 minutos
0,12 minutos
0,11 minutos
0,14 minutos
0,08 minutos
0,07 minutos
0,24 minutos
1,13 1hora e 13 minutos
2,39 2 horas e 13 minutos
-----
5,56 errado correto seria 07:16:00
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
converte campo numerico em horas
nSecs := Secs("00:00:16")
nSecs += Secs("00:00:16")
nSecs += Secs("00:00:20")
nSecs += Secs("00:00:17")
nSecs += Secs("00:00:17")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:10")
nSecs += Secs("00:00:07")
nSecs += Secs("00:00:06")
nSecs += Secs("00:00:12")
nSecs += Secs("00:00:11")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:08")
nSecs += Secs("00:00:07")
nSecs += Secs("00:00:24")
nSecs += Secs("01:13:00")
nSecs += Secs("02:39:00")
cTempo := TString(nSecs)
nSecs += Secs("00:00:16")
nSecs += Secs("00:00:20")
nSecs += Secs("00:00:17")
nSecs += Secs("00:00:17")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:10")
nSecs += Secs("00:00:07")
nSecs += Secs("00:00:06")
nSecs += Secs("00:00:12")
nSecs += Secs("00:00:11")
nSecs += Secs("00:00:14")
nSecs += Secs("00:00:08")
nSecs += Secs("00:00:07")
nSecs += Secs("00:00:24")
nSecs += Secs("01:13:00")
nSecs += Secs("02:39:00")
cTempo := TString(nSecs)

Rca Sistemas - Itaocara - RJ
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
converte campo numerico em horas
Opa opa, calma.
0,16 minutos equivale a 16 minutos ou a 9.6 segundos?
0,16 minutos equivale a 16 minutos ou a 9.6 segundos?
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
converte campo numerico em horas
Olá!
Quando lemos uma string de horário no formato HH:MM:SS, como em 07:16:00, temos tres grandezas envolvidas, ou seja, horas, minutos e segundos onde uma é fração de outra. Assim, se você somar tudo como números, obterá um resultado incorreto.
A solução é reduzir tudo para a menor unidade (neste caso segundos) e acumular à medida em que vai imprimindo o relatório. Na hora de totalizar o campo, converter os segundos de volta para o formato HH:MM:SS.
Consulte os exemplos do Clipper: C:\CLIPPER5\SOURCE\SAMPLE\TIME.PRG
O Sambomb mostrou quase isso. Apenas formatou as strings de forma incorreta (os minutos passaram a ser segundos).
Quando lemos uma string de horário no formato HH:MM:SS, como em 07:16:00, temos tres grandezas envolvidas, ou seja, horas, minutos e segundos onde uma é fração de outra. Assim, se você somar tudo como números, obterá um resultado incorreto.
A solução é reduzir tudo para a menor unidade (neste caso segundos) e acumular à medida em que vai imprimindo o relatório. Na hora de totalizar o campo, converter os segundos de volta para o formato HH:MM:SS.
Consulte os exemplos do Clipper: C:\CLIPPER5\SOURCE\SAMPLE\TIME.PRG
O Sambomb mostrou quase isso. Apenas formatou as strings de forma incorreta (os minutos passaram a ser segundos).
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
converte campo numerico em horas
Era aí que eu ia chegaralxsts escreveu:A solução é reduzir tudo para a menor unidade (neste caso segundos) e acumular à medida em que vai imprimindo o relatório.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
converte campo numerico em horas
Olá Wanderson,
Sua soma está errada. O total de horas do seu exemplo soma 07:25:00 e não 07:16:00.
Se a variavel é numérica, não é virgula, e sim ponto. Assim, com base nas dicas dos colegas veja se o exemplo abaixo lhe ajuda:
Sua soma está errada. O total de horas do seu exemplo soma 07:25:00 e não 07:16:00.
Se a variavel é numérica, não é virgula, e sim ponto. Assim, com base nas dicas dos colegas veja se o exemplo abaixo lhe ajuda:
Código: Selecionar todos
Cls
cTempo := SomaScs( 0.16 )
cTempo += SomaScs( 0.16 )
cTempo += SomaScs( 0.20 )
cTempo += SomaScs( 0.17 )
cTempo += SomaScs( 0.17 )
cTempo += SomaScs( 0.14 )
cTempo += SomaScs( 0.14 )
cTempo += SomaScs( 0.10 )
cTempo += SomaScs( 0.07 )
cTempo += SomaScs( 0.06 )
cTempo += SomaScs( 0.12 )
cTempo += SomaScs( 0.11 )
cTempo += SomaScs( 0.14 )
cTempo += SomaScs( 0.08 )
cTempo += SomaScs( 0.07 )
cTempo += SomaScs( 0.24 )
cTempo += SomaScs( 1.13 )
cTempo += SomaScs( 2.39 )
cTempo := TString( cTempo )
? cTempo
Func SomaScs( nTime )
Local cTime := "0" + StrTran( LTrim( Str( nTime ) ), ".", ":" ) + ":00"
Retu Secs( cTime )Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
converte campo numerico em horas
No caso não seria apenas para multiplicar os valores por 3600 para obter a quantidade em segundos?
1.00 horas = 3600 segundos
0.16 horas = 3600 * 0.16 = 576 segundos
No meu exemplo bastaria somar os valores multiplicados por 3600 e depois usar a função TString()
1.00 horas = 3600 segundos
0.16 horas = 3600 * 0.16 = 576 segundos
No meu exemplo bastaria somar os valores multiplicados por 3600 e depois usar a função TString()

Rca Sistemas - Itaocara - RJ
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
converte campo numerico em horas
Olá!
Não Sam.
Uma hora tem 60 minutos de 60 segundos portanto, 3600 segundos.
Assim, para converter uma string no formato HH:MM:SS em segundos, deve-se aplicar a fórmula:
Não Sam.
Uma hora tem 60 minutos de 60 segundos portanto, 3600 segundos.
Assim, para converter uma string no formato HH:MM:SS em segundos, deve-se aplicar a fórmula:
Código: Selecionar todos
nSecs :=( Val(HH) * 3600 ) + ( Val(MM) * 60 ) + Val( SS )[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
converte campo numerico em horas
Só que não está nesse formato...
Se estiver nesse formato basta usar o Secs("00:10:00")
Se estiver nesse formato basta usar o Secs("00:10:00")

Rca Sistemas - Itaocara - RJ
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
converte campo numerico em horas
Olá Sambomb,
Em seu post das 11h03m vc diz:
Em seu post das 11h03m vc diz:
Veja que no caso do autor do tópico, 0.16 refere-se a 16 minutos. Assim, 16 minutos x 60 segundos = 960 segundos, e não 576 segundos.1.00 horas = 3600 segundos <= Aqui Correto
0.16 horas = 3600 * 0.16 = 576 segundos <= Aqui Errado
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
converte campo numerico em horas
Olá!
Realmente, não está no formato padrão para representar horários. Mas aí, seria muito melhor e mais fácil o Wanderson se adequar ao padrão... A fórmula que passei é a fórmula da função Secs()sambomb escreveu:Só que não está nesse formato... Se estiver nesse formato basta usar o Secs("00:10:00")
O cálculo que você faz resulta em 16% de uma hora: (16/100) * 3600 = 576s. E o correto é, sabendo-se que são 16 minutos e que 1 minuto tem 60 segundos, 16 * 60 = 960ssambomb escreveu:explica isso melhor!
Desculpe querida, valeu pela ajuda.anacatacombs escreveu:Era aí que eu ia chegar
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
sambomb
- Usuário Nível 3

- Mensagens: 250
- Registrado em: 24 Out 2008 17:02
- Localização: Itaocara - RJ - Brasil
converte campo numerico em horas
Alexandre, eu entendi o que vc quis dizer, não entendi o que Wanderson (autor do tópico) quer afinal...

Rca Sistemas - Itaocara - RJ