2017-07-22 48 views
0

这是我的日历选取器代码。我如何在Android中限制未来日期在日历中

我想解决最大日历与Comapre服务器日期不系统日期

ShowDatePicker我从图像按钮,点击日期日历打电话是开放

private void showDatePickerDialog(View v) { 
     dateFragment = new DatePickerFragment1(); 
     dateFragment.show(getFragmentManager(), "datePicker"); 

    } 

public static class DatePickerFragment1 extends DialogFragment implements DatePickerDialog.OnDateSetListener { 
    private Context context; 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     context=getActivity(); 

     // Create a new instance of DatePickerDialog and return it 

     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 

     pYear = year; 
     pMonth = month; 
     pDay = dayOfMonth; 
     Creation_Date_Display(); 
    } 

    private void Creation_Date_Display() { 
     StringBuffer DATE = (new StringBuffer().append(pYear).append("-") 
       .append(pMonth + 1).append("-") 
       .append(pDay).append(" ")); 
     // CreationDate.setText(DATE); 

     // Use to make an Correct Format Of a Date 
     String input = String.valueOf(DATE); 
     SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); 
     Date date = null; 
     try { 
      date = df1.parse(input); 
     }catch (Exception e){ 
      e.printStackTrace(e); 
     } 
     String formattedDateOrder = df1.format(date); 
     CreationDate.setText(formattedDateOrder); 
     Creation_Date = formattedDateOrder; 

    } 
} 

我的Android

是新请帮我

回答

2

以下代码防止将来dates.using setMaxDate方法,并采取系统日期。

 @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), this, year, month, day); 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     context=getActivity(); 
     mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis()); 
     // Create a new instance of DatePickerDialog and return it 

     return mDatePicker; 
    } 

吐司示例代码:

if(day>c.get(Calendar.DAY_OF_MONTH){ 
Toast.makeText(mContext, "select valid day", Toast.LENGTH_LONG).show(); 
     return false; 
} 
+0

兄弟,但什么是mDatePicker? –

+0

我已经实现DatePickerDialog.OnDateSetListener –

+0

它是DatePickerDialog的一个对象。 –

1

试试这个你可以用setMaxDate()这个方法用来设置DatePicker支持的最大日期,以毫秒为单位从1970年1月1日00:00:00开始,在getDefault()时区。
setMaxDate

final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH) 
     DatePickerDialog mDatePicker = new DatePickerDialog(SearchResultClass.this, 
      R.style.MyDialogTheme, 
      new DatePickerDialog.OnDateSetListener() { 
       public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { 

       } 

      }, mYear, mMonth, mDay); 

      mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis()); 
mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
+0

pDateSetListener这是什么....我哪一部分该代码被写入 –

+0

@RishabhSaxena pDateSetListener是你的日期选择器听者 –

+0

@RishabhSaxena检查更新ANS –

1

你必须设置属性象下面这样来限制最小和最大的日期。

DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, R.style.DatePicker, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)); 
     // to set Max Date 
      datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis()); 
     // to set Min Date 
      datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
     datePickerDialog.show(); 
0
Date selectedDate = Date.valueOf(pYear+"-"+(pMonth+1)+"-"+pDay); 
      if(selectedDate.getTime()>System.currentTimeMillis()){ 
       Toast.makeText(context, "Can not Select Future Date", Toast.LENGTH_SHORT).show(); 
       selectedDate = new Date(System.currentTimeMillis()); 
       /* pYear = selectedDate.getYear()+1900; 
       pMonth = selectedDate.getMonth(); 
       pDay = selectedDate.getDay();*/ 

       pYear = yearCheck; 
       pMonth = monthCheck; 
       pDay = dayCheck; 
      } 
相关问题