我有兩個日期時間選擇器在我的項目,這是開始日期和結束日期, 但問題是說,如果我選擇18/10/2014開始日期,結束日期是1/11/2014,結束日期是1天爲是無效的,因爲它比第18天小的需要幫助此日期驗證android java
//start date
TableRow r8 = new TableRow(this);
TextView tvStartDate = new TextView(this);
tvStartDate.setText("Start Date: ");
final EditText etStartDate = new EditText(this);
etStartDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar dateNow = Calendar.getInstance();
int year = dateNow.get(Calendar.YEAR);
int month = dateNow.get(Calendar.MONTH);
int day = dateNow.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dp;
dp = new DatePickerDialog(AddPetActivity.this, new OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
// TODO Auto-generated method stub
selectedmonth = selectedmonth + 1;
etStartDate.setText("" + selectedday + "/" + selectedmonth + "/" + selectedyear);
}
}, year, month, day);
dp.setTitle("Select Date");
dp.show();
}
});
r8.addView(tvStartDate);
r8.addView(etStartDate);
tb.addView(r8);
//end date
TableRow r9 = new TableRow(this);
TextView tvEndDate = new TextView(this);
tvEndDate.setText("End Date: ");
final EditText etEndDate = new EditText(this);
etEndDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar dateNow = Calendar.getInstance();
int year = dateNow.get(Calendar.YEAR);
int month = dateNow.get(Calendar.MONTH);
int day = dateNow.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dp;
dp = new DatePickerDialog(AddPetActivity.this, new OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
// TODO Auto-generated method stub
selectedmonth = selectedmonth + 1;
etEndDate.setText("" + selectedday + "/" + selectedmonth + "/" + selectedyear);
}
}, year, month, day);
dp.setTitle("Select Date");
dp.show();
}
});
r9.addView(tvEndDate);
r9.addView(etEndDate);
tb.addView(r9);
=========================================================================================
對於驗證部開始日期和結束日期
else if (CheckDate(today, etStartDate.getText().toString()) == false)
Toast.makeText(getApplicationContext(), "Invalid Start Date!", Toast.LENGTH_SHORT).show();
else{
if (!etEndDate.getText().toString().matches("")) {
if (CheckDate(etStartDate.getText().toString(), etEndDate.getText().toString()) == false)
Toast.makeText(getApplicationContext(), "Invalid End Date!", Toast.LENGTH_SHORT).show();
=========================================================================================
無效
最後部分
private boolean CheckDate(String fromDate, String toDate)
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
Date dateFrom = null;
Date dateTo = null;
try {
dateFrom = sdf.parse(fromDate);
dateTo = sdf.parse(toDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (dateTo.after(dateFrom) == true)
return true;
else
return false;
}
我不明白你的約束。 1/11是18/10之後 – njzk2 2014-10-17 18:37:42
是的,開始日期是18/10,那麼結束日期是1/11,結束日期保持顯示無效日期,因爲1小於18,我必須放19才能使它有效。 – 2014-10-17 18:41:23
那是因爲'mm'是分鐘,你需要'MM'一個月。 – njzk2 2014-10-17 18:58:19