【问题标题】:What is the best way to calculate Age using Flex? [closed]使用 Flex 计算年龄的最佳方法是什么? [关闭]
【发布时间】:2010-09-07 16:36:39
【问题描述】:

使用 Flex 计算年龄的最佳方法是什么?

【问题讨论】:

    标签: apache-flex actionscript-3 actionscript


    【解决方案1】:

    我在the bottom of this page in comments section (which is now offline) 找到了答案。

    jpwrunyan 在 2007 年 4 月 30 日晚上 10:10 说:

    顺便说一下,这里是如何从 DOB 计算年龄(仅)而不需要考虑闰年:

    Fine-Wei Lin 稍作修正,代码如下

    private function getYearsOld(dob:Date):uint {  
        var now:Date = new Date();  
        var yearsOld:uint = Number(now.fullYear) - Number(dob.fullYear);  
        if (dob.month > now.month || (dob.month == now.month && dob.date > now.date)) 
        {
           yearsOld--;
        }
        return yearsOld;  
    }
    

    这可以处理您需要计算年龄的大多数情况。

    【讨论】:

      【解决方案2】:

      您也可以按照here 讨论的大致相同的方式进行操作:(翻译为 AS3)

      var age:int = (new Date()).fullYear - bDay.fullYear;
      if ((new Date()) < (new Date((bDay.fullYear + age), bDay.month, bDay.date))) age--;
      

      【讨论】:

        【解决方案3】:

        这是一个更复杂的计算,它以年和月为单位计算年龄。示例:用户 3 岁 2 个月大。

        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";
        }
        

        【讨论】:

          【解决方案4】:
          var userDOB : Date = new Date(year,month-1,day);
          var today : Date = new Date();
          
          var diff : Date = new Date();
          diff.setTime( today.getTime() - userDOB.getTime() );
          
          var userAge : int = diff.getFullYear() - 1970;
          

          【讨论】:

            【解决方案5】:

            这是一个单行:

            int( now.getFullYear() - dob.getFullYear() + (now.getMonth() - dob.getMonth())*.01 + (now.getDate() - dob.getDate())*.0001 );
            

            【讨论】:

              【解决方案6】:

              我在这里的最佳答案中发现了一些问题。我在这里使用了几个答案来拼凑一些准确的东西(无论如何,对我来说,希望你也是!)

              private function getYearsOld(dob:Date):uint
              {
                  var now:Date = new Date();
                  var age:Date = new Date(now.getTime() - dob.getTime());
                  var yearsOld:uint = age.getFullYear() - 1970;
                  return yearsOld;
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-07-24
                • 1970-01-01
                • 1970-01-01
                • 2012-12-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多