0

可能重复:
bash 计算人的年龄并读取到 csv 文件?

我正在从 CSV 文件中的出生日期计算参与者的年龄。我正在使用此代码,并将 DOB 与当前系统时间进行比较并计算年龄:

echo "Dave,ws245f,09/12/1982"|awk -F'/|,' '{b=mktime($5" "$4" "$3" 00 00 00 00");a=(systime()-b)/(365*24*60*60);a=a==int(a)?a:int(a)+1;print $0","a}' 

输出是

Dave,ws245f,09/12/1982,31

期望的输出

Dave,ws245f,09/12/1982,30

注意:用户在 12 月 12 日 dd/mm/yyyy 之前不是 30 岁,因此计算错误。请帮忙!

4

2 回答 2

1

试试这个:

echo "Dave,ws245f,09/12/1982"|awk -F'/|,' '{b=mktime($5" "$4" "$3" 00 00 00 00");a=(systime()-b)/(365*24*60*60);a+=a<0?-0.5:0.5;a=int(a);print $0","a}'
于 2013-01-16T18:29:56.160 回答
1

替换a=a==int(a)?a:int(a)+1为怎么样a=a==int(a)?a:int(a)?如果你有 0.5 年,你没有 1 年,而是 0 年(和 6 个月)

这意味着你可以说:a=int(a)

于 2013-01-16T18:52:25.643 回答