Recordé lo dificil que me parecía encontrar la diferencia entre dos fechas. Ahora veo que este mismo problema lo tienen muchos developers. Así que es el momento de inmortalizar este tema con un post.
El título de este post dice que comparar no es lo mismo que diferenciar… y es cierto.
.net tiene el método Compare, que nos permite comparar fechas… osea, podemos usar este método cuando queremos saber si dos fechas son iguales, o si una es mayor que la otra… nada más. Veamos:
Dim date1 As Date = #4/27/2009 1:25:00 PM#
Dim date2 As Date = #4/28/2009 12:25:00 PM#
Dim result As Integer = DateTime.Compare(date1, date2)
Dim Respuesta As String
If result < 0 Then
Respuesta = "date1 es menor"
ElseIf result = 0 Then
Respuesta = "ambas fechas son iguales"
Else
Respuesta = "date1 es mayor"
End If
Sigamos, si queremos saber en cuánto exactamente una fecha es mayor que otra.. entonces usamos el método DateDiff, este método nos permite hallarla diferencia entre dos fechas, pero especificándole si queremos obtener la diferencia en días, en horas, en minutos, en segundos, etc…
Dim Respuesta As String
Dim date1 As Date = #4/27/2009 1:25:00 PM#
Dim date2 As Date = #4/28/2009 12:25:00 PM#
Respuesta = "La diferencia en días es: " & DateDiff(DateInterval.Day, date1, date2)
Respuesta = "La diferencia en horas es: " & DateDiff(DateInterval.Hour, date1, date2)
Respuesta = "La diferencia en minutos es: " & DateDiff(DateInterval.Minute, date1, date2)
Respuesta = "La diferencia en segundos es: " & DateDiff(DateInterval.Second, date1, date2)
En realidad, este método es mucho más versátil, pero para nuestro tema es suficiente. Uds pueden indagar más sobre este método en MSDN.
Pero hay una estructura que a mi parecer es la más idónea cuando se trata de comparar fechas, se llama TimeSpan, esta estructura trae lo que tiene el método DateDiff y de una sola pasada… osea, si quieres saber la diferencia en días, horas, minutos, segundos, milisegundos, etc… TimeSpan es la voz:
Dim Respuesta As String
Dim date1 As Date = #4/27/2009 1:25:00 PM#
Dim date2 As Date = #4/28/2009 12:25:00 PM#
Dim tspan As TimeSpan
tspan = date2.Subtract(date1)
Respuesta = "La diferencia en días es: " & tspan.Days
Respuesta = "La diferencia en horas es: " & tspan.Hours
Respuesta = "La diferencia en minutos es: " & tspan.Minutes
Respuesta = "La diferencia en segundos es: " & tspan.Seconds
Resumen:
+ Para saber cuál de las fechas es mayor o menor o igual… sin importar por cuánto, suficiente con usar el método Compare.
+ Para saber la diferencia exacta entre dos fechas… ya sea en días, horas, minutos, segundos o milisegundos (uno de ellos) , suficiente con usar el método DateDiff.
+ Para saber la diferencia exacta entre dos fechas… tanto en días, horas, minutos, segundos y milisegundos (todos a la vez) usa la estructura TimeSpan.
;)
No hay comentarios.:
Publicar un comentario