Flutter-出生日期计算年龄工具类

今天接到的任务需求是将生日读取出来,转换成年龄,最后判断是00后还是90后

于是花了点时间写了这个工具类

代码语言:dart
复制
//转化年龄工具类
class AgeByBirthUtils {
  static String getAge(DateTime brt){
    int age = 0;
    DateTime dateTime = DateTime.now();
    if (dateTime.isBofore(brt)) { //出生日期晚于当前时间,无法计算
      return '出生日期不正确';
    }
    int yearNow = dateTime.year;  //当前年份
    int monthNow = dateTime.month;  //当前月份
    int dayOfMonthNow = dateTime.day; //当前日期
​
    int yearBirth = brt.year;
    int monthBirth = brt.month;
    int dayOfMonthBirth = brt.day;
    age = yearNow - yearBirth;   //计算整岁数
    if (monthNow <= monthBirth) {
      if (monthNow == monthBirth) {
        if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前,年龄减一
      } else {
        age--;//当前月份在生日之前,年龄减一
      }
    }
    return age.toString();
  }
}

网址:https://dartpad.cn/?null_safety=true

这里用到两个方法

  • 时间比较---在之前 isBefore(date)
  • 时间比较---在之后 isAfter(date)

使用:

代码语言:javascript
复制
void main() {

var d1 = DateTime.parse('2006-10-10 09:30:36');

print(AgeByBirthUtils.getAge(d1));


}