2017-07-22 3 views
0

Ceci est mon code de sélecteur de calendrier.Comment je limite la date future dans le calendrier dans Android

Je veux fixer Max Calandre avec Comapre serveur Date non système Date

ShowDatePicker j'appelle de bouton Image clic et date calendrier est ouvert

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; 

    } 
} 

Je suis nouveau dans Android

S'il vous plaît Aidez-moi

Répondre

2

ci-dessous empêcher le code de la méthode future dates.using de setMaxDate, et prend date du système.

 @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; 
    } 

exemple de code pour Toast:

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

ans bro mais ce qui est mDatePicker? –

+0

J'ai implémentent DatePickerDialog.OnDateSetListener –

+0

c'est un objet de DatePickerDialog. –

1

essayez ceci, vous pouvez utiliser setMaxDate() méthode qui est utilisée pour définir la date maximale supportée par ce DatePicker en millisec depuis le 1er janvier 1970 00:00:00 dans le fuseau horaire 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 quel est ce .... et je quelle partie ce code est écrit –

+0

@RishabhSaxena pDateSetListener est votre date picker listner –

+0

@RishabhSaxena vérifier la mise à jour –

1

vous devez définir la propriété comme ci-dessous pour limiter la date minimum et maximum.

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