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

Posted

技术标签:

【中文标题】我如何将当前日期与日期选择器中的用户输入日期进行比较【英文标题】:how do i compare current date with user input date from date picker 【发布时间】:2013-06-12 11:55:48 【问题描述】:

我试图限制日期和时间。我希望如果用户尝试将日期设置为小于当前日期,那么它应该显示警报,并且同样的事情是用时间来完成的。我正在使用日期和时间选择器,我的 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()));
    

你能告诉我在这些听众中要写什么来实现我想要的吗?提前谢谢...!!!

【问题讨论】:

这段代码现在如何工作?它应该如何工作? 【参考方案1】:

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

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

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

如果 now Date 小于 theOtherDate Date,则结果将是一个 int 0。

【讨论】:

【参考方案2】:
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 意味着您将显示警报消息

【讨论】:

【参考方案3】:

代码从日期选择器获取用户日期并转换为 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
                    

                    
         
;

【讨论】:

您可能想在帮助中心指南中look here 编写答案,代码块可能有效,但包含解释总是更好

以上是关于我如何将当前日期与日期选择器中的用户输入日期进行比较的主要内容,如果未能解决你的问题,请参考以下文章

日期选择器中的小时:分钟:秒如何快速

角度材料日期选择器中的日期不正确

如何限制用户从日期选择器中选择过去的日期?

如何将 Angular 日期范围选择器中的日期设置为该月的第一天

如何使用以下代码在输入表单中自动选择当前日期

如何检查日期范围选择器中的日期是不是更改?