Bash年龄计算程序添加足月足天计算功能咨询
Bash脚本新增足月/足天计算实现说明
需补充的核心判断逻辑
你可以在原有周岁计算的基础上,新增两类计算逻辑,不需要额外引入复杂依赖:
- 足月计算:
先算基础足月数 = 年差 * 12 + (当前月份 - 出生月份)
补充判断:如果当前日期 < 出生日期,足月数减1即可,判断逻辑和原有周岁减1逻辑完全对齐,无需额外处理月份天数、闰年问题。 - 足天计算:
不需要手动判断各月天数、闰年差异,直接将出生日期和当前日期都转为Unix时间戳(秒级时间戳,从1970年1月1日起的总秒数),二者差值除以86400(一天的总秒数)后取整,就是准确的足天数值。
修改后完整可运行代码
echo "请输入出生年份" read a_nac echo "请输入出生月份" read m_nac echo "请输入出生日期" read d_nac echo "-----------出生日期---------" echo $a_nac 年 $m_nac 月 $d_nac 日 a_act=$(date +%Y) m_act=$(date +%m) d_act=$(date +%d) echo "-----------当前日期-------------" echo $a_act 年 $m_act 月 $d_act 日 # 原有周岁计算逻辑 edad=$(( a_act - a_nac )) if [ $m_act -lt $m_nac ]; then ((edad--)) elif [ $m_nac -eq $m_act -a $d_act -lt $d_nac ]; then ((edad--)) fi # 新增足月计算逻辑 full_months=$(( (a_act - a_nac) * 12 + m_act - m_nac )) if [ $d_act -lt $d_nac ]; then ((full_months--)) fi # 新增足天计算逻辑 # 转时间戳计算,自动处理闰年、月份天数差异 ts_birth=$(date -d "$a_nac-$m_nac-$d_nac" +%s) ts_now=$(date +%s) full_days=$(( (ts_now - ts_birth) / 86400 )) echo "-----------计算结果-------------------" echo "周岁年龄:$edad 岁" echo "出生至今足月:$full_months 个月" echo "出生至今足天:$full_days 天"
内容的提问来源于stack exchange,提问作者Mermaid14
相关产品推荐
相关产品推荐

