DatePicker указать дату рождения в DatePicker, а затем отобразить количество дней для следующего дня рождения и дня рождения? - PullRequest
0 голосов
/ 26 апреля 2020

Мой вопрос заключается в том, как сделать подсчет, чтобы показать мне возраст после выбора на Datepiker. У меня уже есть дни, оставшиеся до следующего дня рождения, которые я хотел сделать, чтобы показать мне следующий день рождения. вот мой код

 TextView aniv =(TextView) findViewById(R.id.txtaniv);
    TextView dias =(TextView) findViewById(R.id.diasfaltam);

    // Resource Recovery
SharedPreferences dados=getSharedPreferences("info",0);
int dia = dados.getInt("dia",0);
//para mes ficar com a nomeração "normal"
int mes = dados.getInt("mes",0)+1;
int ano = dados.getInt("ano",0);

aniv.setText(dia + "/" + mes + "/" +ano);



// Perform account to determine how many days are left until the birthday
// Create two instances in the calendar
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();



// Let's get the current system date
int anoatual =cal2.get(Calendar.YEAR);
int mesatual =cal2.get(Calendar.MONTH);
int diaatual =cal2.get(Calendar.DAY_OF_MONTH);



// need to check if the birthday has already occurred or not this year
if(mesatual>mes-1) {
anoatual=anoatual+1;
}

if(mesatual==mes-1&&diaatual>dia){
anoatual=anoatual+1;
}


// set the next anniversary date, based on the retrieved data
cal1.set(anoatual, mes-1, dia);

// You need to represent the date in milliseconds to be able to make the difference between them
long milis1 = cal1.getTimeInMillis();
long milis2 = cal2.getTimeInMillis();

// Calculate the difference between the dates
long diff = milis1 - milis2;



// convert the difference in milliseconds to days
long diffDays = diff / (24 * 60 * 60 * 1000);


// Test the displayed result, to check that there are no errors in the calculations
Toast toast = Toast.makeText(getApplicationContext(),"number of days until anniversary
" +diffDays,Toast.LENGTH_LONG);
toast.show();
dias.setText(""+diffDays);
}

это то, что я получаю за все еще 200 дней на ваш день рождения 12/07/1990. и я хочу получить еще 200 дней на ваш 37-й день рождения.

что я претендую на получение

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Я нашел ответ, это добавить это:

cal1.set(ano,mes,dia);
aniv.setText((((cal2.getTimeInMillis() - cal1.getTimeInMillis())
/ (24 * 60 * 60 * 1000) / 365) +1) + "º");
0 голосов
/ 27 апреля 2020

В моем последнем приложении я конвертировал дату в миллисекунды, что является длинным значением, и я вычел из сегодняшней даты в миллисекундах день рождения также в миллисекундах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...