2015-06-07 2 views
0

Я пытаюсь получить следующую дату, соответствующую формату даты, например, получение следующей даты, которая соответствует «1 10:00» (формат: u HH: mm).Получить следующую дату со дня: минут

Пример: Если мы вторник 2 июня - 22:00 (к примеру), я хочу, чтобы получить воскресенье июня 7 - 10:00 как объект Date (потому что она делает матч «1 10 : 00 ")

EDIT: Это было« u »вместо« F », извините!

+2

Обычный комментарий на этом этапе: пожалуйста, покажите нам, что вы пробовали до сих пор. – laune

+1

Формат 'F' означает день недели в месяц, так что вы хотели бы сделать точно? –

+0

7 июня не следующая дата, чтобы иметь 1 в своем поле F. 3 июня. 2 июня - первый вторник июня, поэтому его поле F - 1. 3 июня - первая среда июня, поэтому его поле F также равно 1. – RealSkeptic

ответ

-1

Если я хорошо понимаю ваш вопрос, это сделает трюк. Обычно добавляется 1 минута к текущей дате, пока вы не найдете нужную дату по ее формату.

Вы должны установить безопасное условие, чем true. были добавлены ср 3 июня 10:00:00 VET 2015 ... и 1440 минут:

Calendar calendar = Calendar.getInstance(); 
Date date = new Date("06/02/2015 10:00"); 
calendar.setTime(date); 
SimpleDateFormat sdf = new SimpleDateFormat("F HH:mm"); 
while (true) { 
    calendar.add(Calendar.MINUTE, 1); 
    if (sdf.format(calendar.getTime()).equals(sdf.format(date))) { 
     System.out.println(calendar.getTime()); 
     break; 
    } 
} 

Эта печать.

-1

я, наконец, нашел решение сам:

public static Date getNextDate(SimpleDateFormat format, String value) { 
    try { 
     Date date = format.parse(value); 

     Calendar calendar = Calendar.getInstance(); 

     int diff = date.getDay() - calendar.get(Calendar.DAY_OF_WEEK); 
     if (!(diff > 0)) { 
      diff += 7; 
     } 
     calendar.add(Calendar.DAY_OF_MONTH, diff); 

     calendar.set(Calendar.HOUR_OF_DAY, date.getHours()); 
     calendar.set(Calendar.MINUTE, date.getMinutes()); 
     calendar.set(Calendar.MINUTE, date.getSeconds()); 

     return calendar.getTime(); 
    } catch (ParseException exception) { 
     exception.printStackTrace(); 
    } 

    return null; 
} 

Она возвращает следующую дату, которые соответствуют моему формату. Я использую устаревшие методы, но я исправлю это как можно скорее.

Спасибо за помощь в любом случае!

Смежные вопросы