2016-06-14 3 views
0

Когда пользователь выбирает date между и до date. как calculate ночь в 3-м Edittext в андроид? После моего кода datepickerКак рассчитать количество дней между двумя datepicker в android

3 edittext box 

1 С даты 2 до Дата 3 Количество ночь =?

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

      } 

     }); 
+0

Вы можете использовать Joda Время: http://stackoverflow.com/questions/3802893/number-of-days-between-two-dates-in-joda- время – antonio

ответ

0

Попробуйте это -

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

      } 

     }); 
    } 
+0

где я должен положить этот код – ATKT

+0

В вашем случае сделайте два общедоступных refrecesh of Date (скажем, checkInDate и checkOutDate) в onDateSet получите дату из календаря и назначьте соответствующую ссылку. В onDateSet второго (например, checkout) вы можете рассчитать разницу между обеими датами. – Neo

+0

Я новичок bro :( – ATKT

0

Попробуйте этот код, чтобы получить TOTALNUMBER дней:

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

Проверьте количество дней кода здесь:

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

      } 

     }); 

Поместите этот метод в любом месте в классе:

public int daysBetween(Date d1, Date d2){ 
      return (int)((d2.getTime() - d1.getTime())/(1000 * 60 * 60 * 24)); 
    } 
+0

где я должен положить этот код? – ATKT

+0

В каком edittext вы хотите установить количество ночей? Введите этот код здесь – NehaK

+0

Night = (EditText) rootView.findViewById (R.id.Noofnights); – ATKT

Смежные вопросы