如何将当前日期与日期选择器的用户输入日期进行比较

时间:2013-06-16 10:03:59

标签: android date android-datepicker android-timepicker

我试图在日期和时间上保持约束。我希望如果用户尝试将日期设置为小于当前日期,那么它应该显示警报,同样的事情是按时完成。我使用的是日期和时间选择器,我的onDateSetListeneronTimeSetListener如下:

DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            dateTime.set(Calendar.YEAR, year);
            dateTime.set(Calendar.MONTH, monthOfYear);
            dateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            update_date_display();



            // ---for setting notification----

            day = dayOfMonth;
            month = monthOfYear;
            AddEditTask.year = year;

            c.set(year, month, day);
        }
    };

    protected void update_date_display() {

        et_task_date.setText(formatDate.format(dateTime.getTime()));
    }

    TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

            dateTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
            dateTime.set(Calendar.MINUTE, minute);
            update_time_display();

            // ---for setting notification---

            hour = hourOfDay;
            AddEditTask.minute = minute;

            c.set(Calendar.HOUR_OF_DAY, hourOfDay);
            c.set(Calendar.MINUTE, minute);
            c.set(Calendar.SECOND, 0);
        }
    };

    private void update_time_display() {

        et_task_time.setText(formatTime.format(dateTime.getTime()));
    }
你可以告诉我在那些听众中要写什么来实现我想要的东西。提前谢谢...... !!!

3 个答案:

答案 0 :(得分:8)

以这种方式创建一个新的Date对象:

Date now = new Date(System.currentTimeMillis());

并使用int result = now.compareTo(theOtherDate);

结果将是一个int< 0如果现在Date小于theOtherDate Date,如果它们相等则为0,并且int>如果此日期更大,则为0。

答案 1 :(得分:1)

protected boolean checkDateValidity(Date date){
        Calendar cal = new GregorianCalendar(date.getYear() + 1900, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
        if((cal.getTimeInMillis()-System.currentTimeMillis()) <= 0){
            return false;
        }else{
            return true;
        }
    }

将日期对象传递给此方法

如果返回false则表示您将显示警告消息

答案 2 :(得分:1)

代码从日期选择器获取用户日期并转换为java日期格式并将日期存储在日期格式变量中,然后我获取当前系统日期并将日期存储在另一个日期格式变量中,现在我有两个我可以轻松比较的日期。

DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
    @Override
   public void onDateSet(DatePicker view, int myear, int monthOfYear,int dayOfMonth) {
// get the user picked date from date picker 
        year=myear;         
        month=monthOfYear+1;
        day=dayOfMonth; 
// then convert all values to a single string
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
        String sday = (""+day);
        String smonth=("-"+month);
        String syear=("-"+year);
        String y=(""+sday+smonth+syear);
//convert the string date to a java date             
                    try 
        {
            Date pickerdate = formatter.parse(y);

        } catch (ParseException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
//printing the system current date and picker date
       Date systemdate = new Date(System.currentTimeMillis());
       System.out.println("current "+systemdate);

       System.out.println("format"+pickerdate);

//now u got the two date in date type to compare it easily put ur if and else condition

                   if(your comparedate condition)
                    {
                         do what U want to do
                    }
                   else
                    {

                    }
         }
};
相关问题