0

When user select date between from and to date. how to calculate number of night in 3rd Edittext in android? Following my code for datepicker

3 edittext box

1 From Date 2 To Date 3 Number of night = ?

 CheckInDate = (EditText) rootView.findViewById(R.id.CheckInDate);

        CheckOutDate = (EditText) rootView.findViewById(R.id.CheckOutDate);





        CheckInDate.setOnClickListener(new View.OnClickListener()

        {
            @Override
            public void onClick(View v) {


                if (v == CheckInDate) {

                    final Calendar c = Calendar.getInstance();
                    int mYear = c.get(Calendar.YEAR);
                    int mMonth = c.get(Calendar.MONTH);
                    int mDay = c.get(Calendar.DAY_OF_MONTH);
                    c.set(Calendar.DAY_OF_MONTH, mDay);


                    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
                                    Calendar cal = Calendar.getInstance();
                                    cal.set(Calendar.MONTH, monthOfYear);
                                    cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                                    cal.set(Calendar.YEAR, year);
                                    if(cal.before(c)) {
                                        Toast.makeText(getActivity(), "Select valid date please.", Toast.LENGTH_LONG).show();
                                        return;
                                    }
                                    StringBuilder date = new StringBuilder();
                                    date.delete(0, date.length());
                                    date.append((dayOfMonth<10?"0":"")).append(dayOfMonth)
                                            .append("/").append((monthOfYear + 1) < 10 ? "0" : "")
                                            .append((monthOfYear+1)).append("/").append(year);
                                    CheckInDate.setText(date.toString());
                                }
                            }, mYear, mMonth, mDay);
                    dpd.getDatePicker().setMinDate(c.getTimeInMillis());
                    dpd.show();
                }

            }

        });

        CheckOutDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (v == CheckOutDate) {

                    final Calendar c = Calendar.getInstance();
                    int mYear = c.get(Calendar.YEAR);
                    int mMonth = c.get(Calendar.MONTH);
                    int mDay = c.get(Calendar.DAY_OF_MONTH);
                    c.set(Calendar.DAY_OF_MONTH, mDay);


                    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
                                    Calendar cal = Calendar.getInstance();
                                    cal.set(Calendar.MONTH, monthOfYear);
                                    cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                                    cal.set(Calendar.YEAR, year);
                                    if(cal.before(c)) {
                                        Toast.makeText(getActivity(), "Select valid date please.", Toast.LENGTH_LONG).show();
                                        return;
                                    }
                                    StringBuilder date = new StringBuilder();
                                    date.delete(0, date.length());
                                    date.append((dayOfMonth<10?"0":"")).append(dayOfMonth)
                                            .append("/").append((monthOfYear + 1) < 10 ? "0" : "")
                                            .append((monthOfYear+1)).append("/").append(year);
                                    CheckOutDate.setText(date.toString());
                                }
                            }, mYear, mMonth, mDay);
                    dpd.getDatePicker().setMinDate(c.getTimeInMillis());
                    dpd.show();                }

            }

        });
Vanraj Ghed
  • 1,261
  • 11
  • 23
ATKT
  • 33
  • 2
  • 12
  • You can use Joda Time: http://stackoverflow.com/questions/3802893/number-of-days-between-two-dates-in-joda-time – antonio Jun 14 '16 at 10:42

1 Answers1

0

Try this -

Date checkInTime, checkOutTime;
 private void checkDiff() {
    long duration = checkOutTime.getTime() - checkInTime.getTime();

    long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(duration);
    long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration);
    long diffInHours = TimeUnit.MILLISECONDS.toHours(duration);
    //Now Code as per requirement
}


        CheckInDate = (EditText) rootView.findViewById(R.id.CheckInDate);
        CheckOutDate = (EditText) rootView.findViewById(R.id.CheckOutDate);

        CheckInDate.setOnClickListener(new View.OnClickListener()

        {
            @Override
            public void onClick(View v) {


                if (v == CheckInDate) {

                    final Calendar c = Calendar.getInstance();
                    int mYear = c.get(Calendar.YEAR);
                    int mMonth = c.get(Calendar.MONTH);
                    int mDay = c.get(Calendar.DAY_OF_MONTH);
                    c.set(Calendar.DAY_OF_MONTH, mDay);

                    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
                                    Calendar cal = Calendar.getInstance();
                                    cal.set(Calendar.MONTH, monthOfYear);
                                    cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                                    cal.set(Calendar.YEAR, year);
                                    if (cal.before(c)) {
                                        Toast.makeText(getActivity(), "Select valid date please.", Toast.LENGTH_LONG).show();
                                        return;
                                    }
                                    checkInTime = cal.getTime();
                                    StringBuilder date = new StringBuilder();
                                    date.delete(0, date.length());
                                    date.append((dayOfMonth < 10 ? "0" : "")).append(dayOfMonth)
                                            .append("/").append((monthOfYear + 1) < 10 ? "0" : "")
                                            .append((monthOfYear + 1)).append("/").append(year);
                                    CheckInDate.setText(date.toString());
                                }
                            }, mYear, mMonth, mDay);
                    dpd.getDatePicker().setMinDate(c.getTimeInMillis());
                    dpd.show();
                }

            }

        });

        CheckOutDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (v == CheckOutDate) {

                    final Calendar c = Calendar.getInstance();
                    int mYear = c.get(Calendar.YEAR);
                    int mMonth = c.get(Calendar.MONTH);
                    int mDay = c.get(Calendar.DAY_OF_MONTH);
                    c.set(Calendar.DAY_OF_MONTH, mDay);
                    checkOutTime = c.getTime();

                    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
                                    Calendar cal = Calendar.getInstance();
                                    cal.set(Calendar.MONTH, monthOfYear);
                                    cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                                    cal.set(Calendar.YEAR, year);
                                    if (cal.before(c)) {
                                        Toast.makeText(getActivity(), "Select valid date please.", Toast.LENGTH_LONG).show();
                                        return;
                                    }
                                    StringBuilder date = new StringBuilder();
                                    date.delete(0, date.length());
                                    date.append((dayOfMonth < 10 ? "0" : "")).append(dayOfMonth)
                                            .append("/").append((monthOfYear + 1) < 10 ? "0" : "")
                                            .append((monthOfYear + 1)).append("/").append(year);
                                    CheckOutDate.setText(date.toString());
                                    checkOutTime = cal.getTime();
                                    checkDiff();
                                }
                            }, mYear, mMonth, mDay);
                    dpd.getDatePicker().setMinDate(c.getTimeInMillis());
                    dpd.show();
                }

            }

        });
    }
Neo
  • 3,546
  • 1
  • 24
  • 31
  • In your case make two public refrecesh of Date (let say checkInDate and checkOutDate) in onDateSet get the date from calender and assign to respective reference. In onDateSet of second(i.e. checkout) you can calculate difference between both dates. – Neo Jun 14 '16 at 10:45
  • I'm beginner bro :( – ATKT Jun 14 '16 at 10:52