2017-10-04 41 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