计算年龄和年龄不到一岁时按照一个月零几天表示,为满48小时按照小时计算

本文介绍了如何使用Java编程语言中的LocalDateTime、Duration和Period类来计算患者的年龄,根据不同情况精确到年、月、天的显示格式。
摘要由CSDN通过智能技术生成

以下是相关代码

 /**
     * 计算当前患者的年龄,超过一岁按照一岁显示,未超过的一岁的按照 (2 15/30) 、未超过48小时的按照小时显示
     *
     * @param birthday
     * @return
     */
    public static String calcAge(LocalDateTime birthday) {
        LocalDateTime now = LocalDateTime.now();
        if (!birthday.isBefore(now)) {
            throw new IllegalArgumentException("出生时间必须在当前时间之前");
        }
        //如果两个时间在48小时内就计算出他们的相差的小时
        Duration duration = Duration.between(birthday, now);
        if (duration.toHours() < 48) {
            long hour = Math.abs(duration.toHours());
            return hour + "小时";
        }
        //计算出多少岁
        LocalDate birthDate = birthday.toLocalDate();
        LocalDate today = LocalDate.now();
        Period agePeriod = Period.between(birthDate, today);
        int years = agePeriod.getYears();
        if (years > 0) {
            return years + "岁";
        }
        //计算多少个月份和天数
        long remainingDays = duration.toDays() % 365;
        long months = remainingDays / 30; // 粗略计算月份,实际情况每月天数不同
        long days = remainingDays % 30;
        // 如果今天是生日,不算多一岁
        if (today.getDayOfYear() == birthDate.getDayOfYear()) {
            days++;
        }
        // 对于不满一年的情况,进行详细描述
        if (months == 0) {
            return "0 " + days + "/30";
        } else {
            return months + " " + days + "/30";
        }
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值