android出生日期计算年龄,Java 通过生日计算宝宝多大了,输出我27岁7月零9天

通过生日计算宝宝多大了

前段时间大家在打新冠状疫苗的时候,护士给了我一张小纸条,上面清晰的显示我在地球上的年龄27岁4个月零3天。我们也写个代码走起

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class LifeAge{

/**

* @param birthday 日期格式yyyy-MM-dd

* 根据用户生日计算年龄

* 用Calender对象取得当前日期对象--从对象中分别取出年月日

* 输出结果 例如 27岁7月零9天

*/

public static String getAgeByBirth(String birthday) {

//从Calendar对象中或得一个Date对象

Calendar now = Calendar.getInstance();

/*把出生日期放入Calendar类型的bir对象中,进行Calendar和Date类型进行转换*/

Calendar bir = Calendar.getInstance();

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

try {

bir.setTime(simpleDateFormat.parse(birthday));

} catch (ParseException e) {

e.printStackTrace();

}

//如果生日大于当前日期,则抛出异常:出生日期不能大于当前日期

if (now.before(birthday)) {

throw new IllegalArgumentException("The birthday is before Now,It's unbelievable");

}

//取出当前年月日

int yearNow = now.get(Calendar.YEAR);

int monthNow = now.get(Calendar.MONTH) + 1;

int dayNow = now.get(Calendar.DAY_OF_MONTH);

//取出出生年月日

int yearBirth = bir.get(Calendar.YEAR);

int monthBirth = bir.get(Calendar.MONTH) + 1;

int dayBirth = bir.get(Calendar.DAY_OF_MONTH);

//先day相减,不够向month借,然后month相减,不够向year借,最后year相减。

int day = dayNow - dayBirth;

int month = monthNow - monthBirth;

//年龄是当前年减去出生年

int year = yearNow - yearBirth;

if (day < 0) {

month -= 1;

now.add(Calendar.MONTH, -1);//得到上一个月,用来得到上个月的天数。

//借一个月

day = day + now.getActualMaximum(Calendar.DAY_OF_MONTH);

}

if (month < 0) {

//一年12个月,借12个月

month = (month + 12) % 12;

//借了12个月,少一年

year--;

}

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append(year + "岁");

stringBuilder.append(month + "月");

if (day < 20) {

stringBuilder.append("零" + day + "天");

} else {

stringBuilder.append(day + "天");

}

if (year == 0 && month == 0 && day == 0) {

stringBuilder.delete(0, stringBuilder.length());

stringBuilder.append("今日出生");

}

return stringBuilder.toString();

}

/*main方法测试*/

public static void main(String[] args) {

String birthday = "1993-10-18";

String age = getAgeByBirth(birthday);

System.out.print("年龄=" + age);

}

}

输出结果

27岁7月零9天

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值