如何比较当前日期和用户指定日期?

时间:2014-08-08 09:38:54

标签: android calendar

我想比较当前日期和用户在我的“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;
}

请帮助。

4 个答案:

答案 0 :(得分:1)

您可以将DatecompareTo()进行比较。但是,在您的情况下,您可以使用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();
}