converte campo numerico em horas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

converte campo numerico em horas

Mensagem por alxsts »

Olá!

Entendi que ele tem uma lista de tempos expressos em formato decimal (HHH,MM) ao invés do formato tradicional HH:MM:SS, e quer somar esses valores.

Já sugerimos algumas soluções usando a formatação mais usual. Se ele preferir manter a formatação atual, segue um código para somar no formato decimal.

Código: Selecionar todos

#define Fra(n) ( n - Int(n) )

FUNCTION TimeAdd( aValores )

   LOCAL nSecs := 0

   IF Empty( aValores )
      // carrega dados para teste 
      aValores := {}
      AAdd( aValores, 0.16 )
      AAdd( aValores, 0.16 )
      AAdd( aValores, 0.20 )
      AAdd( aValores, 0.17 )
      AAdd( aValores, 0.17 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.10 )
      AAdd( aValores, 0.07 )
      AAdd( aValores, 0.06 )
      AAdd( aValores, 0.12 )
      AAdd( aValores, 0.11 )
      AAdd( aValores, 0.14 )
      AAdd( aValores, 0.08 )
      AAdd( aValores, 0.07 )
      AAdd( aValores, 0.24 )
      AAdd( aValores, 1.13 )
      AAdd( aValores, 2.39 ) 
   Endif

   AEval( aValores, { |e| nSecs += ( Int( e ) * 3600 ) + ;
                                   ( ( Fra( e ) * 100 ) * 60 ) } )

   RETURN TString( nSecs )
[]´s
Alexandre Santos (AlxSts)
Responder