2017-05-16 31 views
0

MaterialDateTimePicker庫在Android應用程序中用作DateTime選擇器。要求禁用以前和將來的日期,以便在日曆中僅顯示3天,即。昨天,今天和明天。一切工作正常,除了挑選的日期是1個月前。例如在選擇今天(16-05-2017)時,它會提前一個月前(2017年4月15日)。 它顯示1個月的日期而不是1天后退。 代碼:MaterialDateTimePicker MinDate,MaxDate問題

calendar = Calendar.getInstance(); 

     Year = calendar.get(Calendar.YEAR) ; 
     Month = calendar.get(Calendar.MONTH); 
     Day = calendar.get(Calendar.DAY_OF_MONTH); 

     final Calendar maxDate = Calendar.getInstance(); 
     maxDate.set(Calendar.DAY_OF_MONTH, maxDate.get(Calendar.DAY_OF_MONTH) + 1); 
     maxDate.set(Calendar.MONTH, Month); 
     maxDate.set(Calendar.YEAR, Year); 

     final Calendar minDate = Calendar.getInstance(); 
     minDate.set(Calendar.DAY_OF_MONTH, Day - 1); 
     minDate.set(Calendar.MONTH, Month); 
     minDate.set(Calendar.YEAR, Year); 


     mDojBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       datePickerDialog = DatePickerDialog.newInstance(TrainStatus.this, Year, Month, Day); 
       datePickerDialog.setThemeDark(false); 
       datePickerDialog.showYearPickerFirst(false); 
       datePickerDialog.setAccentColor(Color.parseColor("#009688")); 
       datePickerDialog.setTitle("Select Date"); 
       datePickerDialog.setMinDate(minDate); 
       datePickerDialog.setMaxDate(maxDate); 

       datePickerDialog.show(getFragmentManager(), "DatePickerDialog"); 

      } 
     }); 

@Override 
    public void onDateSet(DatePickerDialog view, int Year, int Month, int Day) { 
     dateSelected = String.valueOf(Year)+String.valueOf(Month)+String.valueOf(Day); 

    } 

任何幫助表示感謝。提前感謝。

回答

0
You should add month +1. because here month starts from zero(0). 

dateSelected = String.valueOf(Year)+String.valueOf(Month +1)+String.valueOf(Day); 


Or 

    final Calendar calendar = Calendar.getInstance(); 
      int yy = calendar.get(Calendar.YEAR); 
      int mm = calendar.get(Calendar.MONTH); 
      int dd = calendar.get(Calendar.DAY_OF_MONTH); 

      dialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() { 
       @Override 
       public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) { 
        month = monthOfYear; 
        day = dayOfMonth; 
        TextView tv = (TextView) v1.findViewById(R.id.txtDate); 
        tv.setText(new StringBuilder().append(day).append("-") 
          .append((month + 1)).append("-").append(year)); 
       } 
      }, yy, mm, dd); 

      dialog.setMinDate(calendar); 
+0

感謝您的快速回答,這真是我的錯誤。 – user2695433

0
https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html 

檢查日曆類的官方文檔,每月從0開始,這意味着0 =月,11個月=。

相關問題