PROCEDURE TiempoTransc
PARAMETERS ldFecha1, ldFecha2
* Recibe como parámetro dos fechas (en formato DateTime, devuelve el tiempo transcurrido en formato: Años, Meses, Semanas, Dias, Horas, Minutos, Segundos.
* ldFecha1 = {23/02/2023 07:55:50 AM}
* ldFecha2 = DATETIME()
* Para llamar a la funcion, le pasas los dos parámetros con las fechas y esta te devuelve una cadena de texto con el tiempo transcurrido entre ambas, así:
* lcTiempo = TiempoTransc(ldFecha1, ldFecha2)
IF VARTYPE(ldFecha1) != 'T' OR VARTYPE(ldFecha2) != 'T'
MESSAGEBOX('Los parámetros de ambas fechas deben ser del Tipo DATETIME', 0+16, 'Datos no válidos')
RETURN
ENDIF
* Inicializar variables:
lcTranscurrido = ''
lnDias = TTOD(ldFecha2) - TTOD(ldFecha1)
lnMeses = lnDias / 30
lnAños = lnDias / 365.25
lnHora1 = HOUR(ldFecha1)
lnMinuto1 = MINUTE(ldFecha1)
lnSegundo1 = SEC(ldFecha1)
lnHora2 = HOUR(ldFecha2)
lnMinuto2 = MINUTE(ldFecha2)
lnSegundo2 = SEC(ldFecha2)
* Obtener diferencia en minutos:
lnEnMinutos = ((lnHora2 * 60) + lnMinuto2) - ((lnHora1 * 60) + lnMinuto1)
* Convertir a Horas:
lnHoras = INT(lnEnMinutos / 60)
* Restar horas para que queden minutos:
lnMinutos = lnEnMinutos - (lnHoras * 60)
* Diferencia de segundos:
lnSegundos = ABS(lnSegundo2 - lnSegundo1)
IF lnAños >= 1
IF lnAños = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnAños)) + ' año '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnAños)) + ' años '
ENDIF
ENDIF
IF lnMeses >= 1
IF lnMeses = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnMeses)) + ' mes '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnMeses)) + ' meses '
ENDIF
ENDIF
IF lnDias > 0
IF lnDias >= 7
IF INT(lnDias / 7) = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(INT(lnDias / 7))) + ' semana '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(INT(lnDias / 7))) + ' semanas '
ENDIF
IF MOD(lnDias, 7) = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(MOD(lnDias, 7))) + ' día '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(MOD(lnDias, 7))) + ' días '
ENDIF
ELSE
IF lnDias = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnDias)) + ' día '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnDias)) + ' días '
ENDIF
ENDIF
ENDIF
IF lnHoras > 0
IF lnHoras = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnHoras)) + ' hora '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnHoras)) + ' horas '
ENDIF
ENDIF
IF lnMinutos > 0
IF lnMinutos = 1
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnMinutos)) + ' minuto '
ELSE
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnMinutos)) + ' minutos '
ENDIF
ENDIF
IF lnSegundos > 0
lcTranscurrido = lcTranscurrido + ALLTRIM(STR(lnSegundos)) + ' segundos'
ENDIF
* MESSAGEBOX('El tiempo transcurrido entre: ' + CHR(13) + CHR(13) + TTOC(ldFecha1) + ' y ' + TTOC(ldFecha2) + ' es:' + CHR(13) + CHR(13) + ;
lcTranscurrido, 0+64, 'Mensaje')
RETURN lcTranscurrido
ENDPROC
Comentarios sobre la versión: 1.0 (0)
No hay comentarios