我想用以下方式计算一个人的年龄:
让x成为一个人的年龄。
如何计算这种年龄函数?
答案 0 :(得分:3)
使用日期时,我建议您使用Joda-Time(http://www.joda.org/joda-time/index.html)。然后你就可以这样做:
import org.joda.time.DateTime
import org.joda.time.Period
String getAge(birthday) {
def period = new Period(birthday, new DateTime())
int years = period.getYears()
int months = period.getMonths()
int weeks = period.getWeeks()
int days = period.getDays()
String age
if (years > 0) {
age = "${years} year(s) and ${months} month(s)"
} else if (months > 0) {
age = "${months} month(s)"
} else if (weeks > 0) {
age = "${weeks} week(s)"
} else {
age = "${days} day(s)"
}
return age
}
有关更多信息,请查看DateTime(http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html)和句点(http://www.joda.org/joda-time/apidocs/org/joda/time/Period.html)的文档。
由于您使用Grails标记了您的问题,我猜测您需要为Grails项目使用此功能。如果是这样,您可以使用Joda-Time插件(http://grails.org/plugin/joda-time)添加所需的依赖项。
答案 1 :(得分:0)
我建议您使用最小的可行时间单位重新创建条件,在您的情况下,并使用它来构建您的if语句
// x is age in days
if (x < 7) {
return x;
}
if (x < 31) {
return x/7;
}
您还需要决定考虑一个月和一年的天数,因为两者都有所不同。