Ir al contenido


Foto

Calcular Edad a traves de una Fecha Dada


  • Por favor identifícate para responder
8 respuestas en este tema

#1 amell2020

amell2020

    Advanced Member

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

Escrito 14 diciembre 2011 - 06:46

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
  • 3.486 mensajes
  • LocationMexico City

Escrito 14 diciembre 2011 - 06:51

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 mensajes
  • LocationEn un solo Lugar

Escrito 14 diciembre 2011 - 08:43

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 mensajes
  • LocationEspaña

Escrito 15 diciembre 2011 - 02:14

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 mensajes
  • LocationEn un solo Lugar

Escrito 15 diciembre 2011 - 05:53

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

#6 amell2020

amell2020

    Advanced Member

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

Escrito 15 diciembre 2011 - 06:25

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 mensajes
  • LocationEspaña

Escrito 15 diciembre 2011 - 08:17

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 mensajes

Escrito 15 diciembre 2011 - 08:20

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 mensajes
  • LocationMéxico

Escrito 15 diciembre 2011 - 02:22

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.