2013-06-20 3 views
6

Предположим, у меня есть Дата 20 июня 2013Получить на прошлой неделе диапазон дат для даты в Java

Как я могу получить диапазон дат, за последнюю неделю, то есть в этом случае 9 июня по 15 июня.

Кроме того, если дата была 2 июня 2013

диапазон должен быть 26 мая по 1 июня

+1

@Baadshah, очень полезно :) +1 –

+0

@Baadshah Спасибо за помощь. Я надеялся на это, просто потому, что я не включил то, что я пробовал до сих пор в некоторых фантастических кодировках. Конечно. –

+0

@ RyanMalhotra Но если вы опубликуете то, что вы пробовали до сих пор, было бы легко найти, какая ошибка, а не писать весь код. –

ответ

24

это Java календарь решение на основе

Date date = new Date(); 
    Calendar c = Calendar.getInstance(); 
    c.setTime(date); 
    int i = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek(); 
    c.add(Calendar.DATE, -i - 7); 
    Date start = c.getTime(); 
    c.add(Calendar.DATE, 6); 
    Date end = c.getTime(); 
    System.out.println(start + " - " + end); 

выход

Mon Jun 10 13:22:01 EEST 2013 - Sun Jun 16 13:22:01 EEST 2013 

он локализован, в моей Locale недели начинается с понедельника

+0

Большое спасибо за вашу помощь. :) –

+0

FYI, сложный класс «Календарь» теперь устарел, вытесняется классами java.time. –

4

Вы можете использовать JodaTime для чистого раствора. С JodaTime вы можете сделать, как показано ниже:

final DateTime input = new DateTime(); 
System.out.println(input); 
final DateMidnight startOfLastWeek = 
      new DateMidnight(input.minusWeeks(1).withDayOfWeek(DateTimeConstants.MONDAY)); 
System.out.println(startOfLastWeek); 
final DateMidnight endOfLastWeek = startOfLastWeek.plusDays(6); 
System.out.println(endOfLastWeek); 
+0

Спасибо .. но разве это невозможно в классе Calender? –

3

Попробуйте это

public static void main(String[] args) 
    { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(new Date()); 
     System.out.println("First Day : " + SampleDateLimit.firstDayOfLastWeek(calendar).getTime()); 
     System.out.println("Last Day : " + SampleDateLimit.lastDayOfLastWeek(calendar).getTime()); 
    } 

    public static Calendar firstDayOfLastWeek(Calendar c) 
    { 
     c = (Calendar) c.clone(); 
     // last week 
     c.add(Calendar.WEEK_OF_YEAR, -1); 
     // first day 
     c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 
     return c; 
    } 

    public static Calendar lastDayOfLastWeek(Calendar c) 
    { 
     c = (Calendar) c.clone(); 
     // first day of this week 
     c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 
     // last day of previous week 
     c.add(Calendar.DAY_OF_MONTH, -1); 
     return c; 
    } 
5

Java 8 версия

final ZonedDateTime input = ZonedDateTime.now(); 
System.out.println(input); 
final ZonedDateTime startOfLastWeek = input.minusWeeks(1).with(DayOfWeek.MONDAY); 
System.out.println(startOfLastWeek); 
final ZonedDateTime endOfLastWeek = startOfLastWeek.plusDays(6); 
System.out.println(endOfLastWeek); 
Смежные вопросы