【问题标题】: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()));
    }

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

【问题讨论】:

  • 这段代码现在如何工作?它应该如何工作?

标签: android date android-datepicker android-timepicker


【解决方案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 编写答案,代码块可能有效,但包含解释总是更好
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2016-07-24
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多