Cálculos entre datas (DateTimePicker - DateDiff)

Hoxe quero amosar como realizar cálculos entre datas cómodos en Visual Basic. Net empregando a función DateDiff.

Necesita un formulario, botón, algún de etiqueta e un control DateTimePicker como se mostra na imaxe de abaixo:

e no evento click do botón será o seguinte código:

 txtAños.Text = DateDiff (DateInterval.Year, DateTimePicker1.Value, Now.Date) e "anos"
 txtMeses.Text = DateDiff (DateInterval.Month, DateTimePicker1.Value, Now.Date) e "meses"
 txtSemanas.Text = DateDiff (DateInterval.Day, DateTimePicker1.Value, Now.Date) / 7 & "semanas"
 txtDias.Text = DateDiff (DateInterval.Day, DateTimePicker1.Value, Now.Date) & "días"

executar a aplicación, foi seleccionada nunha data pasada e prema o botón de calcular. O resultado será semellante a esta imaxe:

Este é un exemplo moi sinxelo, basta ollar para algúns códigos e imaxes e eu estou seguro que non terá dúbida, pero se ten algunha, só deixar o teu comentario.

Espero que isto axude.

18 Responses to "cálculos entre datas (DateTimePicker - DateDiff)"

  1. Información Bitacoras.com ...

    Taxa en Bitacoras.com: Hoxe quero amosar como realizar cálculos entre datas no Visual Basic Net usando a función DateDiff .. Precisa dun formulario, botón, un rótulo 's control DateTimePicker, como se mostra na fol ...

  2. Pedro di:

    Ola ante todo grazas.

    Eu teño unha preocupación.

    Hoxe é 29 de abril do 2009
    Eu nacín en setembro de 1980

    segundo
    txtAños.Text = DateDiff (DateInterval.Year, DateTimePicker1.Value, Now.Date) e "anos"

    agora eu teño 29 anos

    pero iso non é así, eu teño 28 para o meu aniversario recentemente, en setembro

    e modificar o código

    grazas de novo

    • Eliseu di:

      Pedro, estender-lle un pouco de información:

      Se Interval defínese como DateInterval.Year, o valor de retorno é simplemente calculada a partir dos anos para pezas das dúas datas indicadas. Así mesmo, o valor de retorno para DateInterval.Month é simplemente calculada a partir das partes do ano e mes dos argumentos.

      Por exemplo, ao comparar 31 decembro - 1 de xaneiro do próximo ano, DateDiff retorna 1 para DateInterval.Year ou DateInterval.Month, pero só na medida pasou un día único.

      Nestes casos eu recomendo, por exemplo, utiliza sempre a pista e dividir por DateInterval.Day 365 e así tería un valor máis exacto: 28,65 anos (por exemplo) e se quere só o ano en que pode utilizar a función int () que pode voltar só unha parte do número.

  3. Alex di:

    Un bo exemplo! Grazas pola información

  4. Jimmy di:

    Ei homes bo post que serviron-me a verdade, ata agora está axudando a cámara como eu Grax.

  5. Ignacio José di:

    seu amigo post moi bo como para definir o formato DateTimePicker DD / MM / AAAA eu recibín por qa MI (Xoves - feira, 12 maio, 1999) e realmente non sei como

    • Eliseu di:

      Ola José:

      só tes que cambiar o control Formatdel propiedade, así como:

      DateTimePicker1.Format = DateTimePickerFormat.Short

      Sorte

  6. John F. di:

    A consulta é quizais demasiado doado, pero eu podería cambiar a forma de mostrar a data no datetiempicker, para min parece: Venres, 27 Novembro, 2009, eu teño simplemente: 27/11/2009.

    que sería, grazas.

  7. John F. di:

    Sentímolo, o comentario non vira antes, que responde a miña pregunta, grazas.

  8. mcinpapr di:

    Boa tarde ... Eu teño un problema ... Eu estou usando dous DateTimePicker en vb.net 2005 e cando selecciono unha data no DateTimePicker segunda debo tomar a diferenza entre dúas datas ... A función comeza no "ValueChanged" o segundo ... Se funciona, pero eu sempre restar un día do que eu debería dar ... por exemplo ... Se eu deixar a data de hoxe para o DateTimePicker primeiro (21/12/2009) e seleccionado no segundo, ao día seguinte (22/12 / 2009) me retorna un valor de 0 ... se selecciona-lo en 23 me devolve o valor de 1. A función utilizada é a seguinte:

    TextBox1.Text = CStr (DateDiff (DateInterval.Day, DTP_ShipDate.Value, DTP_ETA.Value))

    Alguén sabe o que pode ser o que ocorre, por favor?

  9. Lilimarlet di:

    Ola, como vai vostede?
    Eu teño unha consulta-los, como podo obter só o día do FEHA, mira eu teño unha caixa de texto onde eu mostro o feha "2009/01/01" e eu teño un día.

    Eu teño ese

    Din día
    día día = (tfecha.text)

    Non traio nada, pero poñer

    Din ano As Enteiros
    ano ano = (tfecha.text)

    I amosa o ano aquí, pero eu teño do día

  10. Carlos h di:

    Desculpe-me, como eu fago o que eu dataTimerPicker debuelva óso ano-mes-día "aaaa / mm / dd" para seleccionar unha data, eu teño unha consulta en mysql e datas neste formato mantén ("aaaa / mm / dd" ) .....

    Se eu puidese ser o guía agradesco ... Grazas anticipadamente.

  11. Jennifer di:

    Moitas grazas pola información. Foi unha gran axuda.

  12. Hanner Oviedo di:

    A boa xestión non é VB moi bo e eu estou a traballar neste evento, pero eu recibín erro 424 bateu o pouco que teño feito, espero a súa axuda

    Range ("I10") = DateDiff (DateInterval.Month, TextBox18.Value, Now.Date)

    Grazas.

  13. DjMiki di:

    Eliseu bo amigo, grazas pola súa función de me serviu, pero eu teño un detalle, o resultado dáme o DateDiff é unha negativa, siga o exemplo está dando, pero iguais, probar pasalo como cadea, int, cint, CStr, e nada axuda por favor.

  14. DjMiki di:

    Ben Eliseu desculpar o problema, pero boa e resolver o meu problema, pero creo que puxo os parámetros de orde son o contrario, e quero dicir a data 1 e data 2, e despois hai que Date1 Date2.
    Ben corrixido, agora loitando con a comparación deste resultado.

  15. Elkin V di:

    Hey Amigo Grazas moi útil
    É moi fácil lol

    Un resto de tarde tratando de atopar algo

    Non lanza un gran favor!

Comentar