2015-04-15 4 views
-2

У меня есть текущая неделя с понедельника. Теперь я хотел бы найти дату предыдущей недели в понедельник, если я нажму на предыдущий и следующий понедельник, если я нажму дальше на java. Я ищу способ добавить семь дней к моей дате.Дата начала предыдущей и следующей недели понедельника с определенной даты

+0

Вы не разместили свой код, поэтому ответ является общим. Почему вы не можете просто вычесть или добавить в текущий понедельник 7 дней (1 неделю)? В каком формате вы сохраняете дату? – VadymVL

+0

Я могу сделать это, но его просто не 1 предыдущий или следующий ... я хочу пойти несколько предыдущих и несколько потом? –

+0

Если вы хотите продолжить, вы можете просто увеличить счетчик смены дней на '7'. Если он равен «0» - это означает «без сдвига», то есть текущий понедельник. Если это '-7' - в понедельник, если« -14 »- два понедельника раньше. – VadymVL

ответ

3

Вы можете использовать календарь класс для этого: Вот пример

String dt = "2015-04-13"; // Current monday date 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(dt)); 
if(next){ 
    c.add(Calendar.DATE, 7); // for next Monday 
}else{ 
    c.add(Calendar.DATE, -7); // for previous Monday 
} 
dt = sdf.format(c.getTime()); // dt is now the new date 
0
Calendar calendar = Calendar.getInstance(); 
calendar.set(2015, Calendar.April, 15);//Given date 
System.out.printf("Starting day ", calendar); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DATE, 7);//for next 
calendar.add(Calendar.DATE, -7);//for previous 
0

Это должно дать вам результат вы хотите.

public static void main(String[] args) 
{ 
    String date = "2015-04-13"; // Current Monday date. 

    System.out.println(process(date, "next")); 
    System.out.println(process(date, "PREVIOUS")); 
    System.out.println(process(date, "next")); 
} 

private static String process(String date, String operation) 
{ 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 

    Calendar calendar = Calendar.getInstance(); //create new calendar instance 
    calendar.clear(); //clear the current information on the calendar instance 
    calendar.setLenient(false); 

    try { 
     calendar.setTime(sdf.parse(date)); //parse current Monday date and set as calendar date/time 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    if("NEXT".equalsIgnoreCase(operation)) { 
     calendar.add(Calendar.DATE, 7); // for next Monday 
    } 

    if("PREVIOUS".equalsIgnoreCase(operation)) { 
     calendar.add(Calendar.DATE, -7); // for previous Monday 
    } 

    return sdf.format(calendar.getTime()); //format the calendar date/time 
} 
Смежные вопросы