2013-06-16 2 views
2

Я пытаюсь сохранить ограничение по дате и времени. Я хочу, чтобы, если пользователь пытается установить дату меньше текущей даты, тогда он должен показывать предупреждение, и то же самое нужно делать со временем. Я использую дату и время сборщиков и мой onDateSetListener и onTimeSetListener, как показано ниже:Как сравнить текущую дату с датой ввода пользователя с даты выбора даты

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())); 
    } 

вы можете сказать мне, что должно быть написано в этих слушателей добиться того, что я хочу. Заранее спасибо...!!!

+0

Как этот код работает сейчас? Как это должно работать? – vorrtex

ответ

7

Создание нового объекта Date так:

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

и использовать int result = now.compareTo(theOtherDate);

результат будет Int < 0, если в настоящее время Дата меньше theOtherDate Дата, 0, если они равны, и int> 0, если эта дата больше.

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; 
     } 
    } 

передать объект даты к этому методу

если она возвращает ложь означает, что вы будете показывать предупредительное сообщение о

1

код получает дату пользователя от выбора даты и преобразования в формат даты Java и хранения date в переменной формата даты, а затем я получаю текущую системную дату и сохраняю дату в другой переменной формата даты, теперь у меня есть две даты, где я могу легко сравнивать.

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 
        { 

        } 
     } 
}; 
+0

Возможно, вы захотите [посмотреть здесь] (http://stackoverflow.com/help/how-to-answer) в справочном центре для написания ответов, куски кода могут работать, но в том числе объяснение всегда лучше – talegna