2015-07-02 2 views
0

Я хочу установить будильник на определенную дату, выбранную пользователем, когда я установил день до текущего дня, он устанавливает его в прошлую дату, я хочу, чтобы он был установлен в будущее.Android Calendar: Get to the day day

Вот мой календарь Кодовый набора:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, hour.getHour()); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.AM_PM, Calendar.AM); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.Monday); 

скажу сегодня четверг, когда я установить дату понедельник, я хочу, чтобы установить на 4 дня позже, но он устанавливает на 3 дня раньше, минута понедельника

+0

Возможный дубликат [Как добавить дни к дате в Java] (http://stackoverflow.com/questions/2507377/how-to-add-days-to-a-date-in-java) –

ответ

1

Вы можете использовать следующую «технологии»:

  1. вычислить разность дней между текущим днем ​​и тот день, когда вы хотите установить в каландр в будущем, как это, например

    //future date 
    Calendar thatDay = Calendar.getInstance(); 
    thatDay.set(Calendar.HOUR_OF_DAY, hour.getHour()); 
    thatDay.set(Calendar.MINUTE, 0); 
    thatDay.set(Calendar.SECOND, 0); 
    thatDay.set(Calendar.AM_PM, Calendar.AM); 
    thatDay.set(Calendar.DAY_OF_WEEK, Calendar.Monday); 
    
    //current date 
    Calendar newDay = Calendar.getInstance(); 
    
    long diff = thatDay.getTimeInMillis() - newDay.getTimeInMillis(); //result in millis 
    
    //result in days 
    long days = diff/(24 * 60 * 60 * 1000); 
    
  2. добавить в календарь так много дней, как вы вычислили в шаге 1, как это, например:

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, hour.getHour()); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.AM_PM, Calendar.AM); 
    calendar.add(Calendar.DATE, daysCount); // Add daysCount days to current date 
    
0

Вы должны add, а не set. После того, как вы добавите экземпляр Calendar, он будет продвигаться или подставляться (вы можете добавить отрицательный, также) правильно.

Установив одно из свойств, которое вам, возможно, придется обрабатывать со всех сторон.