Cálculos entre fechas (DateTimePicker – DateDiff)

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.



18 Responses to “Cálculos entre fechas (DateTimePicker – DateDiff)”

  1. 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…

  2. Pedro dice:

    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

    • Eliseo dice:

      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.

  3. Alex dice:

    Buen ejemplo!!! Gracias por la información

  4. jimmy dice:

    Hey men que buen post la verdad me sirvio mucho sigue asi ayudando a la mara como yo, grax.

  5. jose ignacio dice:

    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

    • Eliseo dice:

      Hola josé:

      solo tienes que cambiar la propiedad Formatdel control, así:

      DateTimePicker1.Format = DateTimePickerFormat.Short

      Suerte

  6. Juan F. dice:

    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.

  7. Juan F. dice:

    Disculpa, no habia visto el comentario anterior, el cual responde mi consulta, gracias.

  8. mcinpapr dice:

    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??

  9. Lilimarlet dice:

    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

  10. Carlos h dice:

    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.

  11. Jennifer dice:

    Muchas gracias por la informacion. Se fue de gran ayuda.

  12. hanner Oviedo dice:

    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.

  13. DjMiki dice:

    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.

  14. DjMiki dice:

    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.

  15. Elkin V dice:

    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!

Comentar