今天接到的任务需求是将生日读取出来,转换成年龄,最后判断是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));
}