converte campo numerico em horas
Enviado: 11 Jul 2011 15:31
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.
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 )