Programación en Visual Foxpro. Horas transcurridas entre entrada y salida de datos informáticos
Saludos! Tengo un sistema en isual fox que captura hora de entrada y hora de salida yo quiero saber cuantas horas han transcurrido en dichas horas y almacenarlas en una base... Estoy iniciándome en esto de la programación en visual ... Gracias
Usa esta función * Funcion .......: DifHMS * Creada ........: Julio 16, 2003 By Sukos * Uso ...........: Obtiene la diferencia en Horas, Minutos y Segundos entre dos Horas * Llamada .......: DifHMS(,) * Donde .........: = Expresion de Hora Inicial, en formato "HH:MM:SS" * = Expresion de Hora Final, en formato "HH:MM:SS" * Observaciones .: Si la Hora Inicial es mayor que la Hora Final esta funcion supone que el proceso inicio * antes de la medianoche y concluyo despues de las 0 horas, en este caso realiza la * operacion tomando en cuenta desde la Hora inicial hasta la medianoche mas lo que resulte * de la medianoche hasta la hora final. * Ejemplo .......: DifHMS("00:00:05","00:00:05") -----> Devuelve "00:00:00" * DifHMS("16:00:10","17:00:15") -----> Devuelve "01:00:05" * DifHMS("23:59:58","00:00:05") -----> Devuelve "00:00:07" * Notas .........: Si se usa en un metodo de formularios, solamente convierte a comentario * la primera linea agregandole un "*" al inicio y la llamas con "Objeto.DifHMS(,)" * -------------------------------------------------------------------------------------------------------------------------- Func DifHMS(Vl_Hora1, Vl_Hora2) Local Vl_Resp, Vl_Hh1, Vl_Mm1, Vl_Ss1, Vl_Hh2, Vl_Mm2, Vl_Ss2 Local Vl_HoraCompl1, Vl_HoraCompl2, Vl_DifTiempo, Vl_DifHh, Vl_DifMm, Vl_DifSs Vl_Hh1=Int(Val(SubStr(Vl_Hora1,1,2))) Vl_Mm1=Int(Val(SubStr(Vl_Hora1,4,2))) Vl_Ss1=Int(Val(SubStr(Vl_Hora1,7,2))) Vl_Hh2=Int(Val(SubStr(Vl_Hora2,1,2))) Vl_Mm2=Int(Val(SubStr(Vl_Hora2,4,2))) Vl_Ss2=Int(Val(SubStr(Vl_Hora2,7,2))) Vl_HoraCompl1=DateTime(100,1,1,Vl_Hh1,Vl_Mm1,Vl_Ss1) Vl_HoraCompl2=DateTime(100,1,1,Vl_Hh2,Vl_Mm2,Vl_Ss2) Vl_HoraCero1=DateTime(100,1,1,23,59,59) Vl_HoraCero2=DateTime(100,1,1,0,0,0) If Vl_HoraCompl1=Vl_HoraCompl2 Store 0 To Vl_DifHh, Vl_DifMm, Vl_DifSs Else If Vl_HoraCompl1 Vl_DifTiempo=Vl_HoraCompl2-Vl_HoraCompl1 Else Vl_DifTiempo=(Vl_HoraCero1-Vl_HoraCompl1)+(Vl_HoraCompl2-Vl_HoraCero2)+1 EndIf Vl_DifHh=Int(Vl_DifTiempo/3600) && Calcula las Horas Vl_DifTiempo=Int(Vl_DifTiempo%3600) && Quita las horas obtenidas Vl_DifMm=Int(Vl_DifTiempo/60) && Calcula los minutos Vl_DifSs=Int(Vl_DifTiempo%60) && Calcula los Segundos EndIf Vl_Resp=PadL(Vl_DifHh,2,"0")+":"+PadL(Vl_DifMm,2,"0")+":"+PadL(Vl_DifSs,2,"0") Retu Vl_Resp Suerte