Ejemplo de cómo restar fechas y horas (Visual Basic)

Dos ejemplos de cómo restar fechas y horas.
Para saber los segundos entre dos horas o los días entre dos fechas.
Crea un form con los siguientes controles, dejale los nombre por defecto.
4 TextBox
2 Labels
2 Commands
Distribuyelos para que los dos primeros TextoBoxes estén con el primer label y command, lo mismo con el resto.
Añade lo siguiente al form y pulsa F5
Ejemplo de prueba para restar fechas y horas

Option Explicit
Private Sub Command1_Click()
Dim t0 As Variant, t1 As Variant

‘Text1 Tendrá una fecha anterior
‘Text2 tendrá la nueva fecha
t0 = DateValue(Text1)
t1 = DateValue(Text2)
Label1 = t1 – t0

End Sub

Private Sub Command2_Click()
Dim t0 As Variant, t1 As Variant

‘Text3 Tendrá una hora anterior
Text4 = Format(Now, “hh:mm:ss”)
t0 = Format(Text3, “hh:mm:ss”)
t1 = Format(Text4, “hh:mm:ss”)
Label2 = Format(TimeValue(t1) – TimeValue(t0), “hh:mm:ss”)

End Sub

Private Sub Form_Load()
‘Para probar la diferencia de fechas
Text1 = DateValue(Now)
Text2 = DateValue(Now + 10)

‘Para probar la diferencia de horas
Text3 = Format(Now, “hh:mm:ss”)
Text4 = Format(Now, “hh:mm:ss”)

Command1_Click
Command2_Click
End Sub

25 comentarios en “Ejemplo de cómo restar fechas y horas (Visual Basic)

  1. AYUDAAAAAAAAA!!! Una pregunta si en una base de datos de acces tengo una tabla que tenga campos ID NOMBRE Y FECHADEINGRESO y en visual basic quiero que me despliege en un datagrid todos los campos, que sean menor que una fecha ingresada en un textbox? te agradeceria mucho la ayuda

  2. Hola a todos buenos dias, tengo una aplicacion enlazada a un sql server, tengo un campo de txtfecha que se captura por el usuario y un campo llamado txtdiastotal en el cual quiero se almacenen los dias transcurridos desde txtfecha hasta la fecha actual y que se actualicen dia con dia…gracias desde ya!

  3. disculpen ya he usado todos los codigos para la resta de horas pero me a parece error de sintaxis y no me ejecuta el programa y quisiera que alguien me gie es que tengo que hacer un proyecto sobre el control de un ciber y necesito calcular el tiempo entre cajas de texto se los agradecere si me ayudan

  4. Ojo con el DateDiff si quieren sacar años en forma exacta, no anda, prueben por ejemplo 10/03/2001 y 09/03/2011 les dara igual 10 años y tambien con 01/01/2011 sigue dando 10 años, OJO CON ESTO, para que sea mas exacto usen DateDiff(“d”, fecha1, fecha2) / 365, de todas maneras tampoco es muy exacto ya que solo al poner 07/03/2011 da 9 años si no da 10 años.

  5. todos sus ejemplos son buenos
    yo necesito un code que me reste las cantidades en otros textbox
    ej.:
    private sub depositado_click()
    depositado.value=val(sueldo)-los otros textbox que tengo y que el total restante me quede en mi textbox depositado
    please
    Si alguien me ayuda se lo agredecere por el resto de mis dias.

  6. Para lo de poner la fecha o la hora en un label o texbox

    text1=format(now,”dd/mm/yy”) ‘Fecha 01/01/09

    label1=format(now,”medium time”) ‘Hora 10:12 p.m.

  7. hola necesito que me ayuden necesito la diferencia entre una fecha dada y la fecha actual en dias por favor como hago

  8. Como puedo hacer para que me sumen horas ejemplo:
    1.- 09:00, 2.- 09:00, 3.- 09:00, 4.- 09:00 la suma de esas horas deberia mostrar 36:00 horas. se agradece la ayuda

  9. tengo una duda como le hago para que solo me aparesca en un textbox la hora por ejemplo si es la 1:00:00 Pm que me aparesca en el textbox que son la 13:00:00

    como le hago

  10. Fácil aunque un poco tarde , R100 lei el post.Supongo VB6
    3 TextBox, 1 Command, nombres por default.
    Private Sub Command1_Click()
    Dim t0, t1 As Variant
    ‘Resta de horas, Text1 hora anterior, Text3 el resultado
    t0 = Format(Text1, “hh:mm”)
    t1 = Format(Text2, “hh:mm”)
    Text3 = Format(TimeValue(t1) – TimeValue(t0), “hh:mm”)
    End Sub

  11. muchachos, necesito que visual de la diferencia de dos horas…

    es decir que en el un texbox1 coloque 8:00, en el texbox2 9:30 y que en un textbox4 me aparezca la diferencia de estas dos es decir 1:30

    Le agradezco al que me pueda ayudar

  12. Hola geancarlo, mas fácil no podría ser.

    Para saber la diferencia en los distintos intervalos posibles:
    En años -> DateDiff(“yyyy”, fecha1, fecha2, vbMonday)
    En meses -> DateDiff(“m”, fecha1, fecha2, vbMonday)
    En días -> DateDiff(“d”, fecha1, fecha2, vbMonday)
    En horas -> DateDiff(“h”, fecha1, fecha2, vbMonday)
    En minutos -> DateDiff(“n”, fecha1, fecha2, vbMonday)
    En segundos -> DateDiff(“s”, fecha1, fecha2, vbMonday)

  13. quiero programar una fecha y me piden las cantidadd de dias,meses,y años q pasaron entre una y otra fecha…

  14. hola quiero obtener la diferencia entre la fecha del sistema y otra fecha la cual es permamente, necesito saber como hacerlo en visualbasic.net 2005..si alguien puede ayudarme porfavor espero su respuesta. gracias

  15. Ya resolvi el problema, acá les dejo el código… Se escuchan críticas para mejorarlo.

    Private Sub btnCalcular_Click()
    Const Formato As String = “#,##0″
    Dim wanos, wmeses, wdias, wdecimalm, wdecimald As String
    txtFecIng.Text = Format(txtFecIng.Text, “General Date”)
    txtFecEgre.Text = Format(txtFecEgre.Text, “General Date”)
    ‘ Cálculo del número de años
    txtAnos.Text = Format(DateDiff(“yyyy”, txtFecIng.Text, txtFecEgre.Text), Formato)
    ‘ Cálculo del número de meses
    txtMeses.Text = Format(DateDiff(“m”, txtFecIng.Text, txtFecEgre.Text), Formato)
    wmeses = Format(txtMeses.Text / 12, “#,###.##”)
    wdecimalm = Round((wmeses – Int(wmeses)) * 12)
    txtMeses.Text = Int(wdecimalm)
    ‘ Cálculo del número de días
    txtDias.Text = Format(DateDiff(“y”, txtFecIng.Text, txtFecEgre.Text), Formato)
    wdias = Format(txtDias.Text / 360, “#,###.##”)
    wdecimald = (wdias – Int(wdias))
    wdecimald = Int(wdecimald * 30)
    txtDias.Text = wdecimald
    End Sub

    Private Sub btnIngresar_Click()
    txtFecIng.Enabled = True
    txtFecIng.Text = “”
    txtAnos.Text = “”
    txtMeses.Text = “”
    txtDias.Text = “”
    txtFecIng.SetFocus
    End Sub

    Private Sub Form_Load()
    Me.Cls
    txtFecIng.Enabled = False
    txtFecEgre.Enabled = False
    txtFecEgre.Text = Format(Date$, “General Date”)
    End Sub

    Private Sub btnSalir_Click()
    Unload Me
    End
    End Sub

    Private Sub txtFecIng_Change()
    txtFecEgre.Enabled = True
    End Sub

  16. Buen día. Necesito calcula la diferencia que existe entre dos fechas y expresarla en días, meses y años con visual basic. Tengo algo como esto pero no me calcula el número de días exactos…

    Const Formato As String = “#,##0″
    Dim wanos, wmeses, wdias, wdecimalm, wdecimald As String
    txtFecIng.Text = Format(txtFecIng.Text, “General Date”)
    txtFecEgre.Text = Format(txtFecEgre.Text, “General Date”)
    txtAnos.Text = Format(DateDiff(“yyyy”, txtFecIng.Text, txtFecEgre.Text), Formato) – 1 ‘Cálculo del número de años
    txtMeses.Text = Format(DateDiff(“m”, txtFecIng.Text, txtFecEgre.Text), Formato)
    wmeses = Format(txtMeses.Text / 12, “#,###.##”)
    wdecimalm = (wmeses – Int(wmeses)) * 12 ‘Cálculo del número de meses
    txtMeses.Text = Int(wdecimalm)
    txtDias.Text = Format(DateDiff(“y”, txtFecIng.Text, txtFecEgre.Text), Formato)
    wdias = Format(txtDias.Text / 365, “#,###.##”)
    wdecimald = (wdias – Int(wdias))
    wdecimald = Round(((wdecimald * 365) / 12) – Int(((wdecimald * 365) / 12)))
    txtDias.Text = wdecimald

  17. Maxi, precisamente la hora que me has dicho es conflictiva ya que las 24:00:00 no existe y si pongo las 00:00:00 me dará la diferencia desde el comienzo del día. Por ello voy a poner 23:59:59. Si vas a usar como norma las 00:00 del día siguiente acuérdate de sumarle un segundo antes de mostrar la respuesta.

    Pon en un proyecto 2 textbox, 1 label y 1 botón y pega el siguiente código:

    Option Explicit
    Private Sub Command1_Click()
    Dim t0 As Variant, t1 As Variant

    t0 = Format(Text1, “hh:mm:ss”)
    t1 = Format(Text2, “hh:mm:ss”)
    Label1 = Format(TimeValue(t1) – TimeValue(t0), “hh:mm:ss”)
    End Sub

    Private Sub Form_Load()
    Text1 = “22:30:00″ ‘Format(Now, “hh:mm:ss”)
    Text2 = “23:59:59″ ‘Format(Now, “hh:mm:ss”)

    Command1_Click
    End Sub

  18. Pero el timediff( ) no existe, ups, ya no se que hacer, aunque sea decime si sabes como restar 2 horas con respecto a la medianoche, por ej:

    24:00 – 22:30 = 1:30 , ni siquiera eso me sale,

    Te agradeceria mucho si me ayudas…

  19. Para saber las horas corridas entre un dia a otro, tus fechas deberian estar con formato
    dd/mm/yyyy hh:mm
    usando la funcion timediff( )

  20. Maxi, la sintaxis sería la siguiente:

    DateDiff(intervalo, fecha1, fecha2)

    Donde intervalo es la unidad en la que deseamos hacer el cálculo “s” para segundos, “d” para días, “h” para las horas, “m” para meses, “yyyy” para años…

    Los parámetros fecha1 y fecha2 son las dos fechas involucradas en la resta.

  21. Hola que tal me sirvio de mucho tu aporte , pero tengo un problema cuando quiero restar dos horas que son de diferentes dias , y la hora de entrada es mas chica que la de salida, como podria hacer esto???

    Muchas gracias

    SaLUDOS…

Los comentarios están cerrados.