我想写一个方法来计算出生日期的年龄,逻辑是否正确以及如何在android Java中编写它:
public int calculateAge(String birthday){
// consider that birthday format is ddmmyyyy;
String today = SystemDate(ddmmyyyy);
int bDay = birthday(1,2).toInteger;
int bMonth = birthday(3,4).toInteger;
int bYear = birhtday(5,8).toInteger;
int tDay = today(1,2).toInteger;
int tMonth = today(3,4).toInteger;
int tYear = today(5,8).toInteger;
if (tMonth == bMonth){
if (tday>= bDay){
age = tYear - bYear;
else
age = tYear - bYear - 1;}
else
if (tMonth > bMonth) {
age = tYear - bYear;
else
age = tYear - bYear - 1;}
}
return age;
}
Run Code Online (Sandbox Code Playgroud)
Kin*_*lmn 50
这是我解决问题的方法:
/**
* Method to extract the user's age from the entered Date of Birth.
*
* @param DoB String The user's date of birth.
*
* @return ageS String The user's age in years based on the supplied DoB.
*/
private String getAge(int year, int month, int day){
Calendar dob = Calendar.getInstance();
Calendar today = Calendar.getInstance();
dob.set(year, month, day);
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){
age--;
}
Integer ageInt = new Integer(age);
String ageS = ageInt.toString();
return ageS;
}
Run Code Online (Sandbox Code Playgroud)
我使用DatePicker来获取此处所需的输入值.此方法与日期选择器一起专门用于获取用户的DoB并计算其年龄.可以进行轻微修改以允许用户DoB的String输入,具体取决于您的具体实现.String的返回类型用于更新TextView,可以进行轻微的mod以允许类型int输出.
W I*_*R D 12
这完美适用.....
public int getAge(int DOByear, int DOBmonth, int DOBday) {
int age;
final Calendar calenderToday = Calendar.getInstance();
int currentYear = calenderToday.get(Calendar.YEAR);
int currentMonth = 1 + calenderToday.get(Calendar.MONTH);
int todayDay = calenderToday.get(Calendar.DAY_OF_MONTH);
age = currentYear - DOByear;
if(DOBmonth > currentMonth) {
--age;
} else if(DOBmonth == currentMonth) {
if(DOBday > todayDay){
--age;
}
}
return age;
}
Run Code Online (Sandbox Code Playgroud)
以下是您应该能够使用的Android年龄计算示例:
public int getAge (int _year, int _month, int _day) {
GregorianCalendar cal = new GregorianCalendar();
int y, m, d, a;
y = cal.get(Calendar.YEAR);
m = cal.get(Calendar.MONTH);
d = cal.get(Calendar.DAY_OF_MONTH);
cal.set(_year, _month, _day);
a = y - cal.get(Calendar.YEAR);
if ((m < cal.get(Calendar.MONTH))
|| ((m == cal.get(Calendar.MONTH)) && (d < cal
.get(Calendar.DAY_OF_MONTH)))) {
--a;
}
if(a < 0)
throw new IllegalArgumentException("Age < 0");
return a;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24420 次 |
| 最近记录: |