Android 计算年龄不准确
我想更新用户年龄当计算年龄大于当前年龄时,它将更新数据库。 这是一段计算年龄的代码,但并不准确 我正在通过SharedReferences检索dob,它是: 27-07-1993年龄应该是27岁,但打印出来的是26岁。 有没有办法让它精确计算?提前谢谢Android 计算年龄不准确,android,Android,我想更新用户年龄当计算年龄大于当前年龄时,它将更新数据库。 这是一段计算年龄的代码,但并不准确 我正在通过SharedReferences检索dob,它是: 27-07-1993年龄应该是27岁,但打印出来的是26岁。 有没有办法让它精确计算?提前谢谢 private int getAge(){ String userDob = SharedPrefManager.getUserDob(); Date date = null; Simple
private int getAge(){
String userDob = SharedPrefManager.getUserDob();
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
try {
date = sdf.parse(userDob);
} catch (ParseException e) {
e.printStackTrace();
}
if(date == null) return 0;
Calendar dob = Calendar.getInstance();
Calendar today = Calendar.getInstance();
dob.setTime(date);
int year = dob.get(Calendar.YEAR);
int month = dob.get(Calendar.MONTH);
int day = dob.get(Calendar.DAY_OF_MONTH);
dob.set(year, month+1, 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--;
}
Log.i(CalcAge, "my age " + age);
return age;
}
private int getAge(){
字符串userDob=SharedPrefManager.getUserDob();
日期=空;
SimpleDataFormat sdf=新的SimpleDataFormat(“dd-MM-yyyy”);
试一试{
date=sdf.parse(userDob);
}捕获(解析异常){
e、 printStackTrace();
}
if(date==null)返回0;
Calendar dob=Calendar.getInstance();
Calendar today=Calendar.getInstance();
目标设定时间(日期);
int year=dob.get(日历年);
int month=dob.get(日历月);
int day=dob.get(日历日/月);
日期设置(年、月+1、日);
int age=today.get(Calendar.YEAR)-dob.get(Calendar.YEAR);
如果(今天获取(日历年中的日期)
试试这个:
private int getAge(){
String userDob = SharedPrefManager..getUserDob();
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy", LOCALE_DEFAULT);
try {
Date date = format.parse(userDob);
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
Calendar dob = Calendar.getInstance();
dob.setTime(date);
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
Calendar birthDayThisYear = Calendar.getInstance();
birthDayThisYear.set(today.get(Calendar.YEAR), dob.get(Calendar.MONTH), dob.get(Calendar.DAY_OF_MONTH));
birthDayThisYear.set(Calendar.HOUR_OF_DAY, 0);
birthDayThisYear.set(Calendar.MINUTE, 0);
birthDayThisYear.set(Calendar.SECOND, 0);
birthDayThisYear.set(Calendar.MILLISECOND, 0);
if (today.before(birthDayThisYear)) {
age--;
}
return age;
} catch (ParseException e) {
return 0;
}
}