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

Calcular Edad a traves de una Fecha Dada
Started by
amell2020
, Dec 14 2011 06:46 PM
8 replies to this topic
#1
Posted 14 December 2011 - 06:46 PM
#2
Posted 14 December 2011 - 06:51 PM
Aquí si voy a tener que sacar mi lado de maestra

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 !



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 !

#3
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
#4
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
Edat = año actual - año nacimiento
Y si lo quieres afinar
Edat =fecha actual - fecha nacimiento
Nos leemos
#5
Posted 15 December 2011 - 05:53 AM
okay, dame un ejemplo para ver por favor de como seria en delphi
#6
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:
Gracias por la ayuda brindas de todas formas
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
#7
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
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
#8
Posted 15 December 2011 - 08:20 AM
Con la función YearsBetween ubicada en la unidad DateUtils. Ejm:
delphi
begin Edit1.Text := IntToStr(DateUtils.YearsBetween(Date, DateTimePicker.Date)); end;
#9
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.
Ingresas la fecha de nacimiento y te devuelve la edad en años, meses y días.
delphi
function Edad(Fecha:TDateTime;Var Annos,Meses,Dias : Integer) : String; var A, AA, M, MM, D, DD: Word; Anio, Mes, Dia: double; begin DecodeDate(Fecha, A, M, D); DecodeDate(Date, AA, MM, DD); Anio := Int(AA - A); if( M <= MM ) then Mes := MM - M else begin Mes := MM+12-M; Anio := Anio -1; end; if( D <= DD ) then Dia := DD - D else begin Dia:=DD+MonthDays[IsLeapYear(AA),MM]-D; Mes := Mes -1; end; //Caso especial donde no ha cumplido años, pero los cumplirá el mismo mes if Mes < 0 then begin Anio := Anio - 1; Mes := 12 + Mes; end; Annos:= Trunc(Anio); Meses:=Trunc(Mes); Dias:=Trunc(Dia); Result := Format('%.0f Años %.0f Meses %.0f Dias', [Anio, Mes, Dia]); end;