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,231
  • 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

2 Answers2

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,490
  • 1
  • 25
  • 30
  • 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
0

Try this code to get totalNumber of days :

  Calendar cal1 = new GregorianCalendar();
     Calendar cal2 = new GregorianCalendar();

     SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");

     Date date = sdf.parse("your first date");
     cal1.setTime(date)
     date = sdf.parse("your second date");
     cal2.setTime(date);

 System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));

Check your number of days code here :

        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());




                                    /************* Check you days HERE ***************/
                                 try {

                                    Calendar calCheckIn =  new GregorianCalendar();
\                                    Calendar calCheckOut = new GregorianCalendar();

                                     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");


                                    Date dateCheckIn = sdf.parse(CheckInDate.getText().toString());
                                    calCheckIn.setTime(dateCheckIn);
                                    Date dateCheckOut = sdf.parse(CheckOutDate.getText().toString());
                                    calCheckOut.setTime(dateCheckOut);

                                    System.out.println("Days= "+daysBetween(dateCheckIn.getTime(),dateCheckOut.getTime()));

                                     EditText Night = (EditText) rootView.findViewById(R.id.Noofnights); 
                                       Night.setText(daysBetween(dateCheckIn.getTime(),dateCheckOut.getTime()) + "");
                                    } catch (Exception e) {
                                    e.printStackTrace();
                                  }
/***************************************/


                                }
                            }, mYear, mMonth, mDay);
                    dpd.getDatePicker().setMinDate(c.getTimeInMillis());
                    dpd.show();                }

            }

        });

Put this Method anywhere in class :

 public int daysBetween(Date d1, Date d2){
             return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
     }
NehaK
  • 2,379
  • 1
  • 13
  • 30