расчет возраста в Flex

Я пытаюсь посчитать возраст в флексе. Я нашел этот предыдущий вопрос Каков наилучший способ рассчитать возраст с помощью Flex?

Я как бы склоняюсь к этому

private function calculateAge(dob:Date):String {        
var now:Date = new Date();

var ageDays:int = 0;
var ageYears:int = 0;
var ageRmdr:int = 0;

var diff:Number = now.getTime()-dob.getTime();
ageDays = diff / 86400000;
ageYears = Math.floor(ageDays / 365.24);
ageRmdr = Math.floor( (ageDays - (ageYears*365.24)) / 30.4375 );

if ( ageRmdr == 12 ) {
    ageRmdr = 11;
}

return ageYears + " years " + ageRmdr + " months"; }

но я не понимаю на 100%, что происходит.

Как мне реализовать это в моем коде, скажем, была ли дата 23.12.1990?

Также, как мне изменить этот код для расчета возраста, если вместо текущей даты указаны две даты? например. 23.12.1990 - 15.10.1999

Спасибо!


person Adam    schedule 03.03.2010    source источник


Ответы (2)


Date.getTime () возвращает количество миллисекунд с 1 января 1970 года, поэтому diff - это количество миллисекунд между двумя датами. Код делится на 86400000, потому что это количество миллисекунд в день. Остальное должно быть очевидно.

Чтобы изменить функцию, позволяющую вводить две даты, вы можете изменить функцию следующим образом:


private function calculateAge(dob:Date, endDate:Date):String {        
   var ageDays:int = 0;
   var ageYears:int = 0;
   var ageRmdr:int = 0;
   var diff:Number = endDate.getTime() - dob.getTime();

   ageDays = diff / 86400000;
   ageYears = Math.floor(ageDays / 365.24);
   ageRmdr = Math.floor( (ageDays - (ageYears*365.24)) / 30.4375 );

   if ( ageRmdr == 12 ) {
      ageRmdr = 11;
   }

   return ageYears + " years " + ageRmdr + " months";
}
person houser2112    schedule 03.03.2010

Я могу представить, что сработает следующее изменение:

private function calculateAge(dob:Date, startfrom:Date):String {        

var ageDays:int = 0;
var ageYears:int = 0;
var ageRmdr:int = 0;

var diff:Number = startfrom.getTime()-dob.getTime();
ageDays = diff / 86400000;
ageYears = Math.floor(ageDays / 365.24);
ageRmdr = Math.floor( (ageDays - (ageYears*365.24)) / 30.4375 );

if ( ageRmdr == 12 ) {
    ageRmdr = 11;
}

return ageYears + " years " + ageRmdr + " months"; 
}
person Richard Harrison    schedule 03.03.2010