我想比较当前日期和用户在我的“cal_set”日历中设置的日期,我想接受日期,如果日期是今天的日期或即将到来的日期,如果日期过去则显示吐司。
这是我的onDateSet方法。
public void onDateSet(DatePicker arg0, int year, int month, int day)
{
// TODO Auto-generated method stub
cal_set.set(Calendar.DAY_OF_MONTH,day);
cal_set.set(Calendar.MONTH, month);
cal_set.set(Calendar.YEAR, year);
if(cal_set.getTime().after(cal_now.getTime))
{
tv_date.setText(new StringBuffer().append(day).append("/").append(month).append("/").append(year));
}
else
{
Toast.makeText(getApplicationContext(),"Please select upcoming date", Toast.LENGTH_LONG).show();
}
}
};
当用户点击调用onDateSet方法的视图时,我在cal_now中设置日期。
iv_date.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
day_now = Calendar.getInstance(Locale.getDefault()).get(Calendar.DAY_OF_MONTH);
month_now = Calendar.getInstance(Locale.getDefault()).get(Calendar.MONTH);
year_now = Calendar.getInstance(Locale.getDefault()).get(Calendar.YEAR);
cal_now = Calendar.getInstance();
showDialog(ID_DATE);
}
});
protected Dialog onCreateDialog(int id)
{
// TODO Auto-generated method stub
switch (id)
{
case ID_DATE:
return new DatePickerDialog(this, onDateSetListener, year_now, month_now, day_now);
default:
break;
}
return null;
}
请帮助。
答案 0 :(得分:1)
您可以将Date
与compareTo()
进行比较。但是,在您的情况下,您可以使用Calendar
方法setMaxDate()
和setMinDate()
。
答案 1 :(得分:0)
你可以简单地使用“now = new Date();”得到实际的日期。 然后,为了测试输入的日期是否优于或等于实际日期,请使用: if(setdate.compareTo(now)> = 0){ //在这里做你的东西 }
答案 2 :(得分:0)
public static boolean CompareDates(String strDate1,String strDate2)
{
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(strDate1);
Date date2 = sdf.parse(strDate2);
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if(date1.compareTo(date2)==0)
{
return true;
}else
{
return false;
}
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
答案 3 :(得分:0)
我终于解决了我的问题,现在我让datepicker从用户获取日期,而不是我在EditText中设置该日期,当用户点击提交按钮时,我只是从edittext获取字符串并将其解析为日期格式,如下所示:
s_date_temp = date_format.parse(et_sdate.getText().toString());
e_date_temp = date_format.parse(et_edate.getText().toString());
之后我将这些日期比较如下:
if(s_date_temp.after(e_date_temp))
{
Toast toast = Toast.makeText(getApplicationContext(), "Error: The Start Date Must Occur Prior To Th End Date!", Toast.LENGTH_LONG);
toast.show();
}