2017-10-04 39 views
0

我有一個簡單的活動,用戶需要選擇日期(僅限日期,無時間)。我需要做出正確的驗證。首先,我想把dayOfMonth,monthOfYear和year放到3個不同的文本視圖中,然後使用「if else」寫入條件,如(如果天< = 0或> = 31 ...)。我試過的代碼:Android中的DatePickerDialog,日期驗證

 @Override 
     public void onClick(View v) { 
      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); 

      datePickerDialog = new DatePickerDialog(Date.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          tvDay.setText(dayOfMonth); 
          tvMonth.setText(monthOfYear); 
          tvYear.setText(year); 


         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
    }); 

但它不起作用,我可以把dayOfMonth,monthOfYear年只有1文本視圖。像這樣:

 public void onClick(View v) { 
      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); 

      datePickerDialog = new DatePickerDialog(Date.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          tvDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year); 
         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
    }); 
} 

如何正確地在我的情況下進行驗證?這可能是個愚蠢的問題,很抱歉,但我是新手。

謝謝。

+0

爲什麼你需要在這裏驗證?如果你使用datepickerdialog你不需要驗證 –

回答

2

您可以使用SimpleDateFormat然後calanderObject.getTime()會給你的String

在這裏我傳遞一個TextView方法內部的參考形式以及格式的日期。這並不重要。

private void setDate(final TextView tV) { 
    final Calendar cal = Calendar.getInstance(); 

    DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); 
      cal.set(year, monthOfYear, dayOfMonth); 
      tV.setText(dateFormat.format(cal.getTime())); 
     } 
    }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); 
    dialog.show(); 
} 
0

丹尼斯是對的,我只是想補充的是,日期驗證您可以使用日曆對象,它有一個像火柴這一切這涼爽的操作對今天的日期一樣

如果(someDate>現在=){ ...

如果您有計算需要考慮閏年(每四年29/2),那麼您可以嘗試自行實施它,那麼您應該使用從Calendar繼承的GregorianCalendar。

https://developer.android.com/reference/java/util/GregorianCalendar.html