none
¿Como calculo una diferencia de fechas en dias? (explico) RRS feed

  • Pregunta

  • Quiero determinar la diferencia entre una fecha almacenada en una variable y la fecha actual en dias.

    Lo que quiero hacer es saber si transcurrieron una cantidad de dias específicos, así.

    -----------------

    Dim nUltimaFecha As DateTime = Now   '(Este dato en realidad lo recupero de una tabla, pero el caso es el mismo)

    Dim nDias As Integer = 5

    ------------------

    Con esos datos quiero saber si transcurrieron los dias especificados desde nUltimaFecha, tomando la fecha actual para comparar. Resumiendo, esto traducido a VB NET

    Si FechaActual - nUltimaFEcha >= nDias msgbox("transcurrieron 5 dias")

    (Declaré la variable que almacena la última fecha como DateTime, dado que el cálculo es en días no sé si es lo más adecuado)

    domingo, 15 de mayo de 2016 8:00

Respuestas

  • Puedes simplemente restar las fechas, y el resultado es un objeto de tipo TimeSpan:

    Dim t as TimeSpan = fecha1 - fecha2

    Y ahora el TimeSpan tiene varias propiedades que te permiten expresar su duración en distintos formatos, por ejemplo, medida en días (que es lo que querías):

    Dim numDias as Double = t.TotalDays

    Además del TotalDays, que te da los días incluida la parte fraccional, también tiene una propiedad Days que te da solo el valor entero.

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:05
  • Puedes obtener el número de días entre dos fechas:

    fechaFin.Date.Subtract(fechaIni.Date).TotalDays

    De esta forma podrías hacer:

    If FechaActual.Date.Subtract(nUltimaFecha.Date).TotalDays >= nDias Then
       MsgBox("Transcurrieron 5 días")
    End  If


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:08
  • Hola,

    Si tienes los DateTimes, hacerlo directamente.

            Dim fecha1 As DateTime = New DateTime(2016, 5, 10)
            Dim fecha2 As DateTime = DateTime.Now
    
            MessageBox.Show("Pasaron " & CInt((fecha2 - fecha1).TotalDays).ToString & " días")

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:14

Todas las respuestas

  • Puedes simplemente restar las fechas, y el resultado es un objeto de tipo TimeSpan:

    Dim t as TimeSpan = fecha1 - fecha2

    Y ahora el TimeSpan tiene varias propiedades que te permiten expresar su duración en distintos formatos, por ejemplo, medida en días (que es lo que querías):

    Dim numDias as Double = t.TotalDays

    Además del TotalDays, que te da los días incluida la parte fraccional, también tiene una propiedad Days que te da solo el valor entero.

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:05
  • Puedes obtener el número de días entre dos fechas:

    fechaFin.Date.Subtract(fechaIni.Date).TotalDays

    De esta forma podrías hacer:

    If FechaActual.Date.Subtract(nUltimaFecha.Date).TotalDays >= nDias Then
       MsgBox("Transcurrieron 5 días")
    End  If


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:08
  • Hola,

    Si tienes los DateTimes, hacerlo directamente.

            Dim fecha1 As DateTime = New DateTime(2016, 5, 10)
            Dim fecha2 As DateTime = DateTime.Now
    
            MessageBox.Show("Pasaron " & CInt((fecha2 - fecha1).TotalDays).ToString & " días")

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 15 de mayo de 2016 9:20
    domingo, 15 de mayo de 2016 8:14
  • Gracias a todos.
    domingo, 15 de mayo de 2016 9:20