Java 根据出生日期获得年龄

Python019

Java 根据出生日期获得年龄,第1张

实现步骤:

1、获取当前时间

2、判断出生日期是否小于当前时间,如果大于,则引发一场

3、从当前时间中取出年、月、日;从出生日期中取出年、月、日,年份相减

4、然后做具体判断

示例代码如下:

public static int getAge(Date birthDay) throws Exception { 

        //获取当前系统时间

        Calendar cal = Calendar.getInstance() 

        //如果出生日期大于当前时间,则抛出异常

        if (cal.before(birthDay)) { 

            throw new IllegalArgumentException( 

                "The birthDay is before Now.It's unbelievable!") 

        } 

        //取出系统当前时间的年、月、日部分

        int yearNow = cal.get(Calendar.YEAR) 

        int monthNow = cal.get(Calendar.MONTH) 

        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH) 

        

        //将日期设置为出生日期

        cal.setTime(birthDay) 

        //取出出生日期的年、月、日部分  

        int yearBirth = cal.get(Calendar.YEAR) 

        int monthBirth = cal.get(Calendar.MONTH) 

        int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH) 

        //当前年份与出生年份相减,初步计算年龄

        int age = yearNow - yearBirth 

        //当前月份与出生日期的月份相比,如果月份小于出生月份,则年龄上减1,表示不满多少周岁

        if (monthNow <= monthBirth) { 

            //如果月份相等,在比较日期,如果当前日,小于出生日,也减1,表示不满多少周岁

            if (monthNow == monthBirth) { 

                if (dayOfMonthNow < dayOfMonthBirth) age-- 

            }else{ 

                age-- 

            } 

        } 

        System.out.println("age:"+age) 

        return age 

    }

计算全班同学年龄之和。

思路:从键盘上依次输入每个同学的年龄,然后求和输出:

import java.util.Scanner

public class TestMain {

public static void main(String[] args) {

int sum=0

Scanner in =new Scanner(System.in)

int n = in.nextInt()

sum+=n;

System.out.println(sum)

}

}

这是一段javascript写的,无论是java或javascript原理都一样,进攻参考

<!-- Begin

function run() {

with (document.agecalc) {

dd = parseInt(day.selectedIndex) + 1

mm = parseInt(month.selectedIndex) + 1

yy = year.value

if (yy.length != 4 || isNaN(yy)) {

document.agecalc.timealive.value = "请输入4位数的年份."

document.agecalc.year.select()

document.agecalc.year.focus()

return

}

}

days = new Date()

gdate = days.getDate()

gmonth = days.getMonth()

gyear = days.getYear()

if (gyear <2000) gyear += 1900

age = gyear - yy

if ((mm == (gmonth + 1)) &&(dd <= parseInt(gdate))) {

age = age

} else {

if (mm <= (gmonth)) {

age = age

} else {

age = age - 1

}

}

if (age == 0)

age = age

document.agecalc.timealive.value = "你已经满了 " + age+ " 周岁 . . .\n\n"

if (mm <= (gmonth + 1))

age = age - 1

if ((mm == (gmonth + 1)) &&(dd >parseInt(gdate)))

age = age + 1

var m

var n

if (mm == 12) n = 31 - dd

if (mm == 11) n = 61 - dd

if (mm == 10) n = 92 - dd

if (mm == 9) n = 122 - dd

if (mm == 8) n = 153 - dd

if (mm == 7) n = 184 - dd

if (mm == 6) n = 214 - dd

if (mm == 5) n = 245 - dd

if (mm == 4) n = 275 - dd

if (mm == 3) n = 306 - dd

if (mm == 2) { n = 334 - ddif (leapyear(yy)) n++}

if (mm == 1) { n = 365 - ddif (leapyear(yy)) n++}

if (gmonth == 1) m = 31

if (gmonth == 2) {

m = 59

if (leapyear(gyear)) m++

}

if (gmonth == 3) { m = 90 if (leapyear(gyear)) m++}

if (gmonth == 4) { m = 120if (leapyear(gyear)) m++}

if (gmonth == 5) { m = 151if (leapyear(gyear)) m++}

if (gmonth == 6) { m = 181if (leapyear(gyear)) m++}

if (gmonth == 7) { m = 212if (leapyear(gyear)) m++}

if (gmonth == 8) { m = 243if (leapyear(gyear)) m++}

if (gmonth == 9) { m = 273if (leapyear(gyear)) m++}

if (gmonth == 10) { m = 304if (leapyear(gyear)) m++}

if (gmonth == 11) { m = 334if (leapyear(gyear)) m++}

if (gmonth == 12) { m = 365if (leapyear(gyear)) m++}

months = age * 12

months += 12 - parseInt(mm)

months += gmonth

totdays = (parseInt(age) * 365)

totdays += age / 4

totdays = parseInt(totdays) + gdate + m + n

if (gmonth == 1) p = 31 + gdate

if (gmonth == 2) {

p = 59 + gdate

if (leapyear(gyear)) m = m+1

}

if (gmonth == 3) { p = 90 + gdate if (leapyear(gyear)) p++}

if (gmonth == 4) { p = 120 + gdateif (leapyear(gyear)) p++}

if (gmonth == 5) { p = 151 + gdateif (leapyear(gyear)) p++}

if (gmonth == 6) { p = 181 + gdateif (leapyear(gyear)) p++}

if (gmonth == 7) { p = 212 + gdateif (leapyear(gyear)) p++}

if (gmonth == 8) { p = 243 + gdateif (leapyear(gyear)) p++}

if (gmonth == 9) { p = 273 + gdateif (leapyear(gyear)) p++}

if (gmonth == 10) { p = 304 + gdateif (leapyear(gyear)) p++}

if (gmonth == 11) { p = 334 + gdateif (leapyear(gyear)) p++}

if (gmonth == 12) { p = 365 + gdateif (leapyear(gyear)) p++}

weeks = (age * 365) + n + p

weeks = weeks / 7

etcdays = parseFloat(weeks) - parseInt(weeks)

etcdays = Math.round(etcdays * 7)

weeks = parseInt(weeks)

etcdays += parseInt(age / 4)

if (etcdays >7)

weeks += parseInt(etcdays / 7)

document.agecalc.timealive.value += " 或 " + months + " 月龄\n"

document.agecalc.timealive.value += " 或 " + weeks + " 周龄\n"

document.agecalc.timealive.value += " 或 " + totdays + " 日龄\n"

var time = new Date()

ghour = time.getHours()

gmin = time.getMinutes()

gsec = time.getSeconds()

hour = ((age * 365) + n + p) * 24

hour += (parseInt(age / 4) * 24)

document.agecalc.timealive.value += " 或 " + hour + " 小时\n"

var min = (hour * 60) + gmin

document.agecalc.timealive.value += " 或 " + min + " 分钟\n"

sec = (min * 60) + gsec

document.agecalc.timealive.value += " 或 " + sec + " 秒钟"

mm = mm - 1

var r

if (mm == 0) r = 0

if (mm == 1) r = 31

if (mm == 2) { r = 59if (leapyear(gyear)) m++}

if (mm == 3) { r = 90 if (leapyear(gyear)) r++}

if (mm == 4) { r = 120if (leapyear(gyear)) r++}

if (mm == 5) { r = 151if (leapyear(gyear)) r++}

if (mm == 6) { r = 181if (leapyear(gyear)) r++}

if (mm == 7) { r = 212if (leapyear(gyear)) r++}

if (mm == 8) { r = 243if (leapyear(gyear)) r++}

if (mm == 9) { r = 273if (leapyear(gyear)) r++}

if (mm == 10) { r = 304if (leapyear(gyear)) r++}

if (mm == 11) { r = 334if (leapyear(gyear)) r++}

mm = mm + 1

r = parseInt(r) + parseInt(dd)

if ((mm >= (gmonth + 1)) &&(dd >gdate)) {

bday = r - m - gdate

}

else {

if ((leapyear(gyear)) &&((mm >2) &&(dd <29))) {

a = 366

} else {

a = 365

}

bday = a + (r - m - gdate)

}

nhour = 24 - parseInt(ghour)

nmin = 60 - parseInt(gmin)

nsec = 60 - parseInt(gsec)

while (bday >366) bday -= 365

if (((bday == 366) &&(leapyear(gyear)) || ((bday == 365) &&(!leapyear(gyear))))) {

document.agecalc.timealive.value += "\n\nSenlon祝贺您!今天是你的生日!祝你生日快乐!"

} else {

document.agecalc.timealive.value += "\n\n另外,你下一个生日距今还有:\n"

+ bday + " 天 " + nhour + " 小时 " + nmin + " 分 " + nsec + " 秒"

setTimeout("run()", 1000)

}

}

function leapyear(a) {

if (((a%4 == 0) &&(a%100 != 0)) || (a%400 == 0))

return true

else

return false

}

// End -->

来自 http://www.dragon-guide.net/hangye/birthday.htm