实现步骤:
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