Jump to content


Photo

Calcular Edad a traves de una Fecha Dada


  • Please log in to reply
8 replies to this topic

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 14 December 2011 - 06:46 PM

hola amigos como sacar la edad desde una fecha de un datatimer para pasarlo a un edit, favor ayuda?
  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 14 December 2011 - 06:51 PM

Aquí si voy a tener que sacar mi lado de maestra  :D :D :D

Cómo lo harías con lápiz y papel ???... Es decir, cuál es la lógica aritmética para obtener ese resultado que deseas ???  *-)

Saludox ! :)
  • 0

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 14 December 2011 - 08:43 PM

bueno pondria datatimer y un edit, y no se si tengo que sacar los datos del datatimer en string y luego dividirlo por 364.5 dias, bueno en si no se por eso pido la ayuda
  • 0

#4 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 15 December 2011 - 02:14 AM

Veo que las mates no es tu fuerte ^^

Edat = año actual - año nacimiento

Y si lo quieres afinar

Edat =fecha actual - fecha nacimiento

Nos leemos

  • 0

#5 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 15 December 2011 - 05:53 AM

okay, dame un ejemplo para ver por favor de como seria en delphi
  • 0

#6 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 15 December 2011 - 06:25 AM

bueno pensado un poquito y mirando la funcion  en la unidad "DateUtils.pas

puede hacer esto y funciono, no se si sea la forma correcta pero lo logre asi:
var
  Nacimiento: TDate;
  Hoy: TDate;

  ANacimiento: Word;
  AHoy: Word;

  Mes, Dia: Word;

begin
  Nacimiento := DateTimePicker2.Date;
  Hoy := Date();

  DecodeDate(Nacimiento, ANacimiento, Mes, Dia);
  DecodeDate(Hoy, AHoy, Mes, Dia);

  Edit2.Text := IntToStr(AHoy - ANacimiento);


Gracias por la ayuda brindas de todas formas
  • 0

#7 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 15 December 2011 - 08:17 AM

Tienes que tener presente que ese cálculo puede que no te devuelva la edat exacta. Es decir, si ejecutas esa función el día 2 de enero y alguien ha hacido a partir del 3 del mismo mes, te dirá que tiene un año más de los que realmente tiene.

De ahí que te decía que hicieras la resta de las dos fechas para mayor precisión que, por supuesto, puedes restar de forma directa o, al menos, ten en cuenta el mes (ya que lo tienes) en los cálculos

Nos leemos

  • 0

#8 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 posts

Posted 15 December 2011 - 08:20 AM

Con la función YearsBetween ubicada en la unidad DateUtils. Ejm:



delphi
  1. begin
  2.   Edit1.Text := IntToStr(DateUtils.YearsBetween(Date, DateTimePicker.Date));
  3. end;


  • 0

#9 markdelphi

markdelphi

    Advanced Member

  • Moderadores
  • PipPipPip
  • 97 posts
  • LocationMéxico

Posted 15 December 2011 - 02:22 PM

A ver prueba esta función:
Ingresas la fecha de nacimiento y te devuelve la edad en años, meses y días.



delphi
  1. function Edad(Fecha:TDateTime;Var Annos,Meses,Dias : Integer) : String;
  2. var A, AA, M, MM, D, DD: Word;
  3.   Anio, Mes, Dia: double;
  4. begin
  5.   DecodeDate(Fecha, A, M, D);
  6.   DecodeDate(Date, AA, MM, DD);
  7.   Anio := Int(AA - A);
  8.   if( M <= MM ) then
  9.     Mes := MM - M
  10.   else
  11.   begin
  12.     Mes := MM+12-M;
  13.     Anio := Anio -1;
  14.   end;
  15.   if( D <= DD ) then
  16.     Dia := DD - D
  17.   else
  18.   begin
  19.     Dia:=DD+MonthDays[IsLeapYear(AA),MM]-D;
  20.     Mes := Mes -1;
  21.   end;
  22. //Caso especial donde no ha cumplido años, pero los cumplirá el mismo mes
  23.   if Mes < 0 then
  24.   begin
  25.     Anio := Anio - 1;
  26.     Mes := 12 + Mes;
  27.   end;
  28.   Annos:= Trunc(Anio);
  29.   Meses:=Trunc(Mes);
  30.   Dias:=Trunc(Dia);
  31.   Result := Format('%.0f Años %.0f Meses %.0f Dias', [Anio, Mes, Dia]);
  32. end;


  • 0




IP.Board spam blocked by CleanTalk.