以时髦的方式计算年龄 - 更现实的方式

时间:2013-12-10 20:07:53

标签: datetime groovy computation

我写了一段代码,使现实生活更加真实。我认为,每当我们遇到生日的日期和月份时,我们每年都会增加年龄,所以从技术上来说,有些年份更长,有些则更短,但对我们这些人来说并不重要。这是我提出的解决方案,我基本上想在这里分享我的解决方案,如果有人有更好的分享方法,我也很感激。

def today= new GregorianCalendar()
def dob= new GregorianCalendar()
dob.set(Calendar.ERA, GregorianCalendar.AD )
dob.set(Calendar.YEAR, 1983 )
dob.set(Calendar.MONTH, Calendar.MAY )
dob.set(Calendar.DATE, 23)


userMonth=dob.get(Calendar.MONTH)
userDay=dob.get(Calendar.DATE)
todayMonth=today.get(Calendar.MONTH)
todayDay=today.get(Calendar.DATE)

if(todayMonth < userMonth && todayDay < userDay){
    println today.get(Calendar.YEAR)-dob.get(Calendar.YEAR)-1
}else{
    println today.get(Calendar.YEAR)-dob.get(Calendar.YEAR)
}

1 个答案:

答案 0 :(得分:0)

这是一个开放式问题,因此您可能需要考虑将其变为不那么主观的内容。

话虽如此,我的意思是使用joda-time,在这种情况下你可以这样做:

import org.joda.time.DateTime
import org.joda.time.Years

def yob = new DateTime(1983, 12, 10, 0, 0).toDateMidnight()
def now = DateTime.now().toDateMidnight()

def years = Years.yearsBetween(yob, now).getYears()

println "Years: $years"

如果你只想分享你的代码供其他人使用(顺便说一下,这很棒),也许你想创建a gist

[编辑]我刚刚创建了一个,here

祝你好运!