Visual Basic.NET - Como sacar la diferencia entre fechas. VB

   
Vista:

Como sacar la diferencia entre fechas. VB

Publicado por angel (1 intervención) el 22/11/2012 04:55:41
hola, saludos, tengo una duda en visual basic sobre sacar la diferencia entre dos fechas y que esta se muestre en un textbox
lo que quiero es:
- las fechas vallan con un DateTimePicker
-la diferencia entre fechas se muestre en un textbox
-todo mediante un boton de comando

trate de hacer textbox1.text = (DateTimePicker2) - (DateTimePicker1) pero sale error

ayúdenme por favor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como sacar la diferencia entre fechas. VB

Publicado por neotecnowindows (15 intervenciones) el 22/11/2012 15:29:43
Es muy fácil.
Suponiendo que lo que quieres es la diferencia en días pones en el click event del botón lo siguiente

On Error Resume Next
TextBox1.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, DateTimePicker2.Value)

nota.- lo the on error.... es por si escribes mal la frase y después te queda colgado un tiempo. Después si va bien lo borras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como sacar la diferencia entre fechas. VB

Publicado por neotecnowindows (15 intervenciones) el 22/11/2012 21:11:34
Ahora bien, es posible que lo quieras más complejo y que te indique el número de años, meses y días transcurridos entre las dos fechas.
Pues bien, para ello añades una Label a la ventana (otros le llaman Formulario) y un módulo. Te pongo el módulo y después qué es lo que hay que poner en el Botón para ver el resultado en la label.

Module Module1
Function YearsMonthsDays(Date1 As Date, Date2 As Date, Optional ShowAll As _
Boolean = False, Optional Grammar As Boolean = True)


Dim TestYear As Long, TestMonth As Long, TestDay As Long
Dim TargetDate As Date, Last1 As Date, Last2 As Date



' Miramos que la fecha inicial no sea superior a la fecha final
If Date1 > Date2 Then
YearsMonthsDays = ""
Exit Function
End If

' miramos si el año coincide
If Date2.Year > Date1.Year Then

' Aquí los años no coinciden

' miramos si coincide el mes y en este caso si ha transcurrido un año completo
If Date2.Month = Date1.Month Then
If Date2.Day >= Date1.Day Then
TestYear = DateDiff("yyyy", Date1, Date2)
Else
TestYear = DateDiff("yyyy", Date1, Date2) - 1
End If

' Ha pasado un año
ElseIf Date2.Month > Date1.Month Then
TestYear = DateDiff("yyyy", Date1, Date2)

' No ha pasado un año
Else
TestYear = DateDiff("yyyy", Date1, Date2) - 1
End If

' El año de las dos fechas es el mismo
Else
TestYear = 0
End If

' Buscar meses completos una vez contados los años

TestMonth = (DateDiff("m", DateSerial(Date1.Year, Date1.Month, 1), DateSerial(Date2.Year, Date2.Month, 1)) + IIf(Date2.Day >= Date1.Day, 0, -1)) Mod 12

' Una vez que tenemos los meses miramos los días restantes

If Date2.Day >= Date1.Day Then
TestDay = Date2.day - Date1.day

' Si el día de la segunda fecha no es mayor, buscamos el fin de mes para contar días
Else

Last1 = DateSerial(Date2.Year, Date2.Month, 0)
Last2 = DateSerial(Date2.Year, Date2.Month + 1, 0)
TargetDate = DateSerial(Date2.Year, Date2.Month - 1, Date1.Day)

If Last2 = Date2 Then
If TestMonth = 11 Then
TestMonth = 0
TestYear = TestYear + 1
Else
TestMonth = TestMonth + 1
End If
Else
TestDay = DateDiff("d", IIf(TargetDate > Last1, Last1, TargetDate), Date2)
End If
End If


If ShowAll Or TestYear >= 1 Then
YearsMonthsDays = TestYear & IIf(TestYear = 1 And Grammar, " Año, ", _
" Años, ") & TestMonth & IIf(TestMonth = 1 And Grammar, " mes, ", _
" meses, ") & TestDay & IIf(TestDay = 1 And Grammar, " día", " días")
Else
If TestMonth >= 1 Then
YearsMonthsDays = TestMonth & IIf(TestMonth = 1 And Grammar, " mes, ", _
" meses, ") & TestDay & IIf(TestDay = 1 And Grammar, " día", " días")
Else

YearsMonthsDays = TestDay & IIf(TestDay = 1 And Grammar, " día", " días")
End If
End If

End Function

End Module

------------------------
Y en el click del botón:

Dim TiempoTranscurrido As String = YearsMonthsDays(DateTimePicker1.Value, DateTimePicker2.Value, False, True)
Label4.Text = TiempoTranscurrido

' Muchas personas necesitan esta manera de presentar los datos. Si, además, necesitas saber los días, sigues con el ejemplo anterior y tienes lo mejor de los dos mundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de mario

Como sacar la diferencia entre fechas. VB

Publicado por mario (6 intervenciones) el 16/09/2014 05:25:21
Hola como seria el código,para cuando me de x fecha me de un mensaje de feliz cumpleaños..muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar