Вычисляем даты, но даты из Date Picker, который имеет метод getDateInstance - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно вычислить дни между двумя датами. Однако формат дат из текстового представления отличается от формата 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);
    }

}

Снимок экрана: диалоговое окно "Выбор даты"

1 Ответ

0 голосов
/ 22 апреля 2019

Нашли решение: SimpleDateFormat myFormat = new SimpleDateFormat ("ММММ дд, гггг", Locale.ENGLISH);

Спасибо

...