Càlculs entre dates (DateTimePicker - DateDiff)

Avui vull mostrar com realitzar cà lculs entre dates en visual basic. Net utilitzant la funció DateDiff.

Necessitarem un formulari, un botó, alguns label 'si un control DateTimePicker, tal com es mostra en la següent imatge:

i en l'esdeveniment clic del botó va el codi:

 txtAños.Text = DateDiff (DateInterval.Year, DateTimePicker1.Value, Now.Date) & "anys"
 txtMeses.Text = DateDiff (DateInterval.Month, DateTimePicker1.Value, Now.Date) & "mesos"
 txtSemanas.Text = DateDiff (DateInterval.Day, DateTimePicker1.Value, Now.Date) / 7 & "setmanes"
 txtDias.Text = DateDiff (DateInterval.Day, DateTimePicker1.Value, Now.Date) & "dies"

executem l'aplicació, seleccionem una data passada i pressionem el botó calcular. El resultat serà similar al d'aquesta imatge:

Aquest és un exemple molt senzill, només cal mirar una mica el codi i les captures i estic segur que no tindràs dubtes, però si arribessis a tenir alguna, només deixa aquí el teu comentari.

Espero que els serveixi.

18 Responses to "Càlculs entre dates (DateTimePicker - DateDiff)"

  1. Informació Bitacoras.com ...

    Valora en Bitacoras.com: Avui vull mostrar com realitzar càlculs entre dates en visual basic. Net utilitzant la funció DateDiff. Necessitarem un formulari, un botó, alguns label? Si un control DateTimePicker, tal com es mostra a la sigu ...

  2. Pere diu:

    Hola primer de tot gràcies.

    tinc una inquietud.

    avui és 29 abril 2009
    néixer el setembre 1980

    segons
    txtAños.Text = DateDiff (DateInterval.Year, DateTimePicker1.Value, Now.Date) & "anys"

    ara tinc 29 any

    però això no és així, tinc 28 perquè recent compleixo anys al setembre

    com modificaria el codi

    gràcies novament

    • Eliseu diu:

      Pere, et amplio una mica la informació:

      Si Interval s'estableix en DateInterval.Year, el valor retornat es calcula simplement a partir de les parts de l'any de les dues dates donades. De la mateixa manera, el valor retornat per DateInterval.Month es calcula simplement a partir de les parts de l'any i del mes dels arguments.

      Per exemple, en comparar 31 de desembre amb 1 de gener del any següent, DateDiff retorna 1 per DateInterval.Year o DateInterval.Month, encara que únicament hagi transcorregut com a molt un sol dia.

      Per a aquests casos et recomano, per exemple, fer servir sempre l'interval DateInterval.Day i dividir per 365 i així tindries una dada més exacte: 28.65 anys (per exemple) i si només vols l'any pots utilitzar la funció int () que et retornarà només la part sencera del nombre.

  3. Alex diu:

    Bon exemple! Gràcies per la informació

  4. jimmy diu:

    Hey examen que bon post la veritat em va servir molt segueix així ajudant a la mara com jo, grax.

  5. jose ignacio diu:

    amic molt bo el teu post com fas per posar el format del datetimepicker en DD / MM / AAAA per qa MI em surt (dijous, 12 maig Del 1999) I de veritat no es com

    • Eliseu diu:

      Hola josé:

      només has de canviar la propietat Formatdel control, així:

      DateTimePicker1.Format = DateTimePickerFormat.Short

      Sort

  6. Juan F. diu:

    Una consulta, potser és molt fàcil, però no he pogut canviar la forma de mostrar la data en el datetiempicker, me la mostra així: divendres, novembre 27, 2009, la necessito simple: 27/11/2009.

    això seria, gràcies.

  7. Juan F. diu:

    Disculpa, no havia vist el comentari anterior, el qual respon la meva consulta, gràcies.

  8. mcinpapr diu:

    Bona tarda ... tinc un problema ... estic utilitzant dos datetimepicker dins vb.net 2005 i quan selecciono una data en el segon DateTimePicker em deu de treure la diferència entre les dues dates ... La funció la vaig posar en l'esdeveniment "ValueChanged" del segon ... Si l'executa però sempre em resta un dia del que em deuria donar ... per exemple ... Si li deixo la data del dia al primer datetimepicker (21/12/2009) i selecciono en el segon el dia següent (22/12 / 2009) em torna un valor de 0 ... si li li selecciono el dia 23 em torna el valor d'1. La funció que utilitzo és la següent:

    textbox1.Text = CSTR (DateDiff (DateInterval.Day, DTP_ShipDate.Value, DTP_ETA.Value))

    Algú sap que pot ser el que passi si us plau??

  9. Lilimarlet diu:

    hola, com estan?
    els tinc una consulta, com puc obtenir només el dia de la fefaent; mirin tinc un TextBox on em mostra la fefaent "2009.01.01" i necessito només el dia.

    tinc això

    dim dia es integer
    dia = day (tfecha.text)

    no em porta res, però poso

    dim any es integer
    any = year (tfecha.text)

    aca em mostra l'any però jo necessito el dia

  10. Carlos h diu:

    Disculpin com faig perquè el dataTimerPicker em debuelva any-mes-dia o sigui "yyyy / mm / dd" en escollir una data, el necessito per a una consulta en Mysql i les dates les guarda en aquest format ("yyyy / mm / dd" ) .....

    Si em podrien orientar els hi agradesco ... Gràcies anticipades.

  11. Jennifer diu:

    Moltes gràcies per la informació. Se'n va anar de gran ajuda.

  12. hanner Oviedo diu:

    Bones no maneig molt bé VB i estic elaborant aquest esdeveniment però no em surt error 424 pego el poc que he fet, espero la seva ajuda

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

    Gràcies.

  13. DjMiki diu:

    Bé Amic Eliseo, gràcies per la teva funció em va servir, però tinc un detall, el resultat que em dóna el DateDiff, és un negatiu, seguiment l'exemple que aquestes donant però igual, intent passar-ho com string, int, cint, CSTR, i res alguna ajuda siusplau.

  14. DjMiki diu:

    Bé Eliseo disculpa la molèstia però bé ja solucioni el meu problema, però crec que l'ordre que posaves els paràmetres són a revez, i em refereixo a la data 1 i data 2, hauria de ser Data2 i després Fecha1.
    Bé corregit, ara lluitant amb comparació d'aquest resultat.

  15. Elkin V diu:

    Hey Amic Moltes gràcies molt Útil
    És molt senzill jajaja

    Tarda una resta de temps intentant donar amb una cosa semblant

    Em Fes fet un gran favor!

Comentar