2016-03-01 87 views
1

选定的日期我想显示结束mimimum日期值开始日期值设定的结束日期选择最小日期超过开始日期选择在android系统不工作

比所选日期没有少,但在我的代码显示结束日期最小值是从今天的日期。

帮助我,如何解决它。

//日期选取器显示

@Override 
protected Dialog onCreateDialog(int id) { 

    switch (id) { 
     case DATE_PICKER_ID: 

      // open datepicker dialog. 
      // set date picker for current date 
      // add pickerListener listner to date picker 
      return new DatePickerDialog(this, pickerListener1, Startyear, Startmonth, Startday); 

     case DATE_PICKER_ID1: 

      // open datepicker dialog. 
      // set date picker for current date 
      // add pickerListener listner to date picker 
      //return new DatePickerDialog(this, pickerListener2, Startyear, Startmonth, Startday); 


     // set minimum date of end datepicker 

      DatePickerDialog dialog = new DatePickerDialog(this, pickerListener2, Startyear, Startmonth, Startday); 


      Calendar c = Calendar.getInstance(); 
      c.set(Startyear1new, Startmonth1new, Startday1new); 
      dialog.getDatePicker().setMinDate(c.getTimeInMillis()-10000); 
     return dialog; 


    } 
    return null; 
} 

private DatePickerDialog.OnDateSetListener pickerListener1 = new DatePickerDialog.OnDateSetListener() { 

    // when dialog box is closed, below method will be called. 
    @Override 
    public void onDateSet(DatePicker view, int selectedYear, 
          int selectedMonth, int selectedDay) { 

     Startyear = selectedYear; 
     Startmonth = selectedMonth; 
     Startday = selectedDay; 



     // Show selected date 
     StringBuilder dateValue=new StringBuilder().append(Startday).append("-") 
       .append(Startmonth + 1).append("-").append(Startyear).append(" "); 

     //for Converting Correct Date format Save into Database 
     SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy"); 
     String abs1= dateValue.toString(); 
     Date testDate1 = null; 
     try { 
      testDate1 = sdf123.parse(abs1); 
     } catch (ParseException e) { 

      e.printStackTrace(); 
     } 
     SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy"); 
     String DateFormat=formatter1.format(testDate1); 
     CampStartDateEdittext_datepicker.setText(DateFormat); 


    } 
}; 

private DatePickerDialog.OnDateSetListener pickerListener2 = new DatePickerDialog.OnDateSetListener() { 

    // when dialog box is closed, below method will be called. 
    @Override 
    public void onDateSet(DatePicker view, int selectedYear, 
          int selectedMonth, int selectedDay) 
    { 

     Endyear = selectedYear; 
     Endmonth = selectedMonth; 
     Endday = selectedDay; 


     // Show selected date 
     StringBuilder dateValue=new StringBuilder().append(Endday).append("-") 
       .append(Endmonth + 1).append("-").append(Endyear).append(" "); 


     //for Converting Correct Date format Save into Database 
     SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy"); 
     String abs1= dateValue.toString(); 
     Date testDate23 = null; 
     try { 
      testDate23 = sdf123.parse(abs1); 
     } catch (ParseException e) { 

      e.printStackTrace(); 
     } 
     SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy"); 
     String DateFormat=formatter1.format(testDate23); 

     Camp_EndDateEdittext_datepicker.setText(DateFormat); 


    } 
}; 

回答

1

你可以尝试结束日期选取器设置验证最小值比你的起始日期选择器值更

mEndDateButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mEndDateTimeCal != null) { 
        mNowEndCal = mEndDateTimeCal; 
       } else { 
        mNowEndCal = Calendar.getInstance(); 
       } 

       DatePickerDialog dialog; 
       if (mStartDay != null && mStartMonth != null && mStartYear != null) { 
        dialog = new DatePickerDialog(FOBookTripActivity.this, new DatePickerDialog.OnDateSetListener() { 
         @Override 
         public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
          mEndYear = year; 
          mEndMonth = monthOfYear; 
          mEndDay = dayOfMonth; 
          if (mEndDateTimeCal == null) { 
           mEndDateTimeCal = Calendar.getInstance(); 
          } 
          mStartDateTimeCal.set(Calendar.YEAR, mStartYear); 
          mStartDateTimeCal.set(Calendar.MONTH, mStartMonth); 
          mStartDateTimeCal.set(Calendar.DAY_OF_MONTH, mStartDay); 

          mEndDateTimeCal.set(Calendar.YEAR, year); 
          mEndDateTimeCal.set(Calendar.MONTH, monthOfYear); 
          mEndDateTimeCal.set(Calendar.DAY_OF_MONTH, dayOfMonth); 

          try { 
           if (mEndDateTimeCal != null && mEndDateTimeCal.before(mStartDateTimeCal)) { 
            mEndDateTimeCal = mStartDateTimeCal; 
            mEndDateButton.setText(CustomUtils.timeStampToHumanReadableDate(mEndDateTimeCal.getTimeInMillis()/1000)); 
           } 
          } catch (ParseException e) { 
           e.printStackTrace();\ 
          } 
         } 
        }, mStartYear, mStartMonth, mStartDay); 

        Calendar cal = Calendar.getInstance(); 
        cal.set(mStartYear, mStartMonth, mStartDay); 

        dialog.getDatePicker().setMinDate(cal.getTimeInMillis() - 1000); 
       } 
       dialog.show(); 
       dialog.getDatePicker().setMinDate(mNowStartCal.getTimeInMillis()); 

      } 
     }); 

希望这对你的作品。

+0

我想表明的开始日期选择器选择为结束日期选择最小的日期。没有任何验证。 – Kumar

+0

在这种情况下,在您的onDateSelected for startDate选择器中,您可以设置endDate Picker的最小日期。我希望你明白了,或者你想让我给你提供片段。 –

+0

我想用我的代码片段 – Kumar

0

在date date中选择第一个datePicker,用该选定的日期初始化第二个datePicker。

1

试试这个:

  DatePicker startDatePickerDialog startDatePickerDialog = new DatePickerstartDatePickerDialog(FOBookTripActivity.this, new DatePickerstartDatePickerDialog.OnDateSetListener() { 
       @Override 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
        mStartDay = dayOfMonth; 
        mStartMonth = monthOfYear; 
        mStartYear = year; 
        if (mStartDateTimeCal == null) { 
         mStartDateTimeCal = Calendar.getInstance(); 
        } 
        mStartDateTimeCal.set(Calendar.YEAR, year); 
        mStartDateTimeCal.set(Calendar.MONTH, monthOfYear); 
        mStartDateTimeCal.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
        try { 
         mStartDateButton.setText(CustomUtils.timeStampToHumanReadableDate(mStartDateTimeCal.getTimeInMillis()/1000)); 


         //setting the start date selected as minimum date for End Date Picker Dialog 
         endDatePickerDialog.getDatePicker().setMinDate(mStartDateTimeCal.getTimeInMillis() - 1000); 

        } catch (ParseException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, mNowStartCal.get(Calendar.YEAR), mNowStartCal.get(Calendar.MONTH), mNowStartCal.get(Calendar.DAY_OF_MONTH)); 

      startDatePickerDialog.show(); 
相关问题