Aritmética con Tiempo Minutos, Segundos y Milésimas

Tengo un formulario con 5 textbox, en los cuales se ingresaran tiempos (ej 4.04.12), necesito identificar el tiempo menor y el tiempo mayor, estos serán descartados, los otros tres tiempos serán promediados.

No he encontrado manera de resolverlo.

1 respuesta

Respuesta
1

H0la Abdel:

¿Cuál es el problema? ¿No sabes cómo hacer la comparación o la haces pero no obtienes los resultados esperados?

S@lu2

Hola Isaac.

No se como trabajar con tiempos.

Los datos con los que necesito trabajar incluye minutos, segundos y milésimas.

Sumar 4 minutos y 5 segundos (4.05) más 2 minutos 55 segundos (2.55) no es como sumar valores numéricos comunes.

Necesito hacer la aplicación que describí en mi pregunta original, y no se como hacerlo.

¿Estás trabajando con variables de tipo Date o son textos a los que tú le das el significado?

Te lo consulto, porque si estás trabajando con el tipo Date puedes utilizar DateAdd o DateDiff para sumar restar o comparar.

Estoy capturando el valor de los textbox en 5 variables tipo date.

Pero no se como establecer  el formato de los textbox, porque necesito escribir minutos, segundos y milésimas.

Esas funciones que mencionas ya las intente utilizar, pero leeré mas sobre ellas.

Me gustaría que me ayudes con un ejemplo.

Gracias.

Se me complicó el asunto con los milisegundos, ya que creo que la unidad mínima con la que trabajan las funciones que te di es con segundos y no encontré algo que me dijera lo contrario. Por lo tanto, cree una función que te permite convertir tu cadena de texto a milisegundos, de esta forma puedes comparar y promediar.

'Convierte una cadena de tiempo (HH. MM. SS.mili) en milisegundos _
strTexto: Expresión que contiene la cadena de tiempo _
intFracSeg: Cantidad en la que se desea fraccionar el segundo _
            (por defecto, 1000 para milisegundos) _
strSeparador: Caracer con el que se separan las distintas unidades de tiempo _
            (por defecto un punto)'
'Por GP'
Function ms(strTexto As String, _
            Optional intFracSeg As Integer = 1000, _
            Optional strSeparador As String = ".") As Long
    Dim datos() As String
    Dim i As Integer, j As Integer
    'Dividir la cadena'
    datos = Split(strTexto, strSeparador)
    j = UBound(datos) - 1
    i = j
    'Tomar los milisegundos'
    ms = CLng(datos(j + 1))
    'Convertir los demás datos en milisegundos'
    Do Until (i < 0)
        ms = ms + (datos(i) * (60 ^ (j - i))) * intFragSeg
        i = i - 1
    Loop
End Function

Te quedaría la tarea de convertir de milisegundos a cada una de las otras unidades en caso de que lo necesitaras.

S@lu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas