Мне нужно вычислить дни между двумя датами. Однако формат дат из текстового представления отличается от формата SimpleDateFormat. Например, после выбора даты в диалоговом окне будет отображаться дата 22 апреля 2019 года. Однако я не могу вычислить дни, поскольку формат SimpleDateFormat - «MM dd гггг», поэтому он должен иметь значение AP 22 2019.
Коды
Details.java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
l[0]= System.currentTimeMillis();
datePicker.show(getSupportFragmentManager(),l[0]+"");
startDateOrEndDate = true ;
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
datePicker.show(getSupportFragmentManager(),l[0]+"");
startDateOrEndDate = false ;
//SimpleDateFormat myFormat = new SimpleDateFormat("MM dd yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("MM dd yyyy");
DateFormat.getDateInstance(DateFormat.LONG);
String firstDate=chckIn.getText().toString();
Date startDate = null; // initialize start date
String secondDate=chckOut.getText().toString();
Date endDate = null; // initialize end date
try {
startDate = myFormat.parse(firstDate);
endDate = myFormat.parse(secondDate);
long duration = endDate.getTime() - startDate.getTime();
long diffInDays = TimeUnit.MILLISECONDS.toDays(duration);
String diffInDaysString = String.valueOf(diffInDays);
beach_days.setText(diffInDaysString);
} catch (ParseException e) {
e.printStackTrace();
}
}
onDateSet
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
l[0]= c.getTimeInMillis()+24*60*60*1000;
String date = DateFormat.getDateInstance(DateFormat.LONG).format(c.getTime());
System.out.println(date);
/*MM dd yyyy*/
TextView textView = (TextView) findViewById(R.id.checkInTV);
TextView textView2 = (TextView) findViewById(R.id.checkOutTV);
if (startDateOrEndDate) {
textView.setText(date);
} else {
textView2.setText(date);
}
}
Снимок экрана: диалоговое окно "Выбор даты"