Hoy quiero mostrarles como realizar cálculos entre fechas en visual basic .net utilizando la funcion DateDiff.
Necesitaremos un formulario, un botón, algunos label’s y un control DateTimePicker, tal como se muestra en la siguiente imagen:

y en el evento clic del botón va el siguiente código:
txtAños.Text = DateDiff(DateInterval.Year, DateTimePicker1.Value, Now.Date) & " años" txtMeses.Text = DateDiff(DateInterval.Month, DateTimePicker1.Value, Now.Date) & " meses" txtSemanas.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now.Date) / 7 & " semanas" txtDias.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now.Date) & " días"
ejecutamos la aplicación, seleccionamos una fecha pasada y presionamos el botón calcular. El resultado será similar al de esta imagen:

Este es un ejemplo muy sencillo, basta con mirar un poco el código y las capturas y estoy seguro de que no tendrás dudas, pero si llegaras a tener alguna, solo deja aquí tu comentario.
Espero que les sirva.
Información Bitacoras.com…
Valora en Bitacoras.com: Hoy quiero mostrarles como realizar cálculos entre fechas en visual basic .net utilizando la funcion DateDiff. Necesitaremos un formulario, un botón, algunos label?s y un control DateTimePicker, tal como se muestra en la sigu…
Hola antes que nada gracias.
tengo una inquietud.
hoy es 29 de abril 2009
naci en setiembre 1980
segun
txtAños.Text = DateDiff(DateInterval.Year, DateTimePicker1.Value, Now.Date) & ” años”
ahora tengo 29 año
pero eso no es asi, tengo 28 porque recien cumplo años en setiembre
como modificaria el codigo
gracias nuevamente
Pedro, te amplío un poco la información:
Si Interval se establece en DateInterval.Year, el valor devuelto se calcula simplemente a partir de las partes del año de las dos fechas dadas. Del mismo modo, el valor devuelto para DateInterval.Month se calcula simplemente a partir de las partes del año y del mes de los argumentos.
Por ejemplo, al comparar 31 de diciembre con 1 de enero del año siguiente, DateDiff devuelve 1 para DateInterval.Year o DateInterval.Month, aunque únicamente haya transcurrido como mucho un solo día.
Para esos casos te recomiendo, por ejemplo, usar siempre el intervalo DateInterval.Day y dividirlo por 365 y así tendrías un dato más exacto: 28.65 años (por ejemplo) y si solo quieres el año puedes usar la función int() que te devolverá solo la parte entera del número.
Buen ejemplo!!! Gracias por la información
Hey men que buen post la verdad me sirvio mucho sigue asi ayudando a la mara como yo, grax.
amigo muy bueno tu post como haces para poner el formato del datetimepicker en DD/MM/AAAA por q a MI me sale (jueves, 12 de mayo Del 1999) Y de verdad no se como
Hola josé:
solo tienes que cambiar la propiedad Formatdel control, así:
DateTimePicker1.Format = DateTimePickerFormat.Short
Suerte
Una consulta, quizas es muy fácil, pero no he podido cambiar la forma de mostrar la fecha en el datetiempicker, me la muestra así: Viernes, 27 de Noviembre de 2009, la necesito simple: 27/11/2009.
eso sería, gracias.
Disculpa, no habia visto el comentario anterior, el cual responde mi consulta, gracias.
Buenas tardes… tengo un problema… estoy utilizando dos datetimepicker dentro de vb.net 2005 y cuando selecciono una fecha en el segundo DateTimePicker me debe de sacar la diferencia entre las dos fechas… La función la puse en el evento “ValueChanged” del segundo… Si lo ejecuta pero siempre me resta un día de lo que me debería de dar… por ejemplo… Si le dejo la fecha del día al primer datetimepicker (21/12/2009) y selecciono en el segundo el día siguiente (22/12/2009) me regresa un valor de 0… si le le selecciono el día 23 me devuelve el valor de 1. La función que utilizo es la siguiente:
textbox1.Text = CStr(DateDiff(DateInterval.Day, DTP_ShipDate.Value, DTP_ETA.Value))
Alguien sabe que puede ser lo que pase por favor??
hola, como estan?
les tengo una consulta, como puedo obtener solo el día de la feha; miren tengo un textbox en donde me muestra la feha “01/01/2009″ y necesito solo el día.
tengo esto
dim dia as integer
dia = day(tfecha.text)
no me trae nada, sin embargo pongo
dim año as integer
año = year(tfecha.text)
aca me muestra el año pero yo necesito el día
Disculpen como hago para que el dataTimerPicker me debuelva año-mes-dia osea “yyyy/mm/dd” al seleccionar una fecha, lo necesito para una consulta en Mysql y las fechas las guarda en ese formato(“yyyy/mm/dd”)…..
Si me podrian orientar se los agradesco… Gracias anticipadas.
ps si es en vB existe la funcion format y utilizas custom, y en customformat yyy/MM/dd
Muchas gracias por la informacion. Se fue de gran ayuda.
Buenas no manejo muy bien VB y estoy elaborando este evento pero no me sale error 424 pego lo poco que he hecho, espero su ayuda
Range(“I10″) = DateDiff(dateinterval.Month, TextBox18.Value, Now.Date)
Gracias.
Bueno Amigo Eliseo, gracias por tu funcion me sirvio, pero tengo un detalle, el resultado que me da el DateDiff, es un negativo, segui el ejemplo que estas dando pero igual, intento pasarlo como string, int, cint, cstr, y nada alguna ayuda porfavor.
Bueno Eliseo disculpa la molestia pero bueno ya solucione mi problema, pero creo que el orden que colocaste los parametros estan al revez, y me refiero a la fecha 1 y fecha 2, deberia ser Fecha2 y luego Fecha1.
Bueno corregido, ahora luchando con comparacion de este resultado.
Hey Amigo Muchas GRacias Muy Util
Es Sencillisimo jajaja
Tarde Un REsto De tiempo Intentando DAr Con algo PArecido
Me Haz echo un gran Favor!