Я пытаюсь рассчитать возраст в java, который учитывает месяцы, поэтому просто вычитание лет не будет работать. Я также хочу сказать пользователю, если сегодня их день рождения. Вот код, который у меня есть до сих пор, но я боюсь, что это немного. Он также не скажет, является ли сегодня днем рождения, хотя две даты, которые он сравнивает, равны. То, как я попытался первоначально рассчитать, - использовать миллисекунды. Причина, по которой вы видите два способа получить текущую дату, состоит в том, что я пытался что-то заставить ее работать, но хотел показать всем свою работу, чтобы они могли указать мне в правильном направлении.Как я могу точно рассчитать возраст в Java Дата рождения
EDIT FOR CLARIFICATION Я имею в виду, что 2015-1993 года может быть 22 года или 21, если их день рождения уже прошел в этом году. Я хочу быть уверенным, что я правильно понял этот возраст.
public class ShowAgeActivity extends AppCompatActivity {
private TextView usersAge;
private static long daysBetween(Date one, Date two)
{
long difference = (one.getTime()-two.getTime())/86400000; return Math.abs(difference);
}
private Date getCurrentForBirthday()
{
Date birthday = (Date) this.getIntent().getExtras().get("TheBirthDay");
int birthdayYear = birthday.getYear() + 1900;
Calendar cal = Calendar.getInstance();
cal.set(birthdayYear, Calendar.MONTH, Calendar.DAY_OF_MONTH);
Date current = cal.getTime();
return current;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_age);
Date birthday = (Date) this.getIntent().getExtras().get("TheBirthDay");
Date currentDay = Calendar.getInstance().getTime();
long age = daysBetween(birthday,currentDay)/365;
usersAge =(TextView)findViewById(R.id.ageTextView);
if (birthday.compareTo(getCurrentForBirthday()) == 0)
{
usersAge.setText("It is your birthday, and your Age is " + String.valueOf(age));
}
usersAge.setText("Your Age is " + String.valueOf(age));
}
}
уточнить, что вы подразумеваете под «счет в течение нескольких месяцев» вы хотите возраст быть 22yrs и 4 месяца, или вы просто означает, 2015-1993 может быть либо 22 лет или 21 в зависимости, если их день рождения уже прошло в этом году –
извинения. я имею в виду, что в 2015-1993 годах может быть 22 года или 21 год, если их день рождения уже прошел в этом году. – alphamalle
@alphamalle. Пожалуйста, размещайте такую дополнительную информацию или пояснения как изменение своего Вопроса, а не как комментарий. Не заставляйте ваших читателей работать так усердно. –