2013-06-20 7 views
6

Giả sử tôi có ngày 20 tháng 6 năm 2013Nhận phạm vi ngày trong tuần trước cho một ngày trong Java

Làm cách nào để có được phạm vi ngày cho tuần trước, tức là trong trường hợp này từ ngày 9 tháng 6 đến ngày 15 tháng 6.

Ngoài ra nếu ngày là ngày 02 tháng 6 năm 2013

phạm vi nên được 26 tháng năm - 1 tháng sáu

+1

@Baadshah, rất hữu ích :) 1 –

+0

@Baadshah Thanks for the help. Tôi đã hy vọng điều này, Chỉ vì tôi havent bao gồm những gì tôi đã cố gắng cho đến nay trong một số niềng răng Coding ưa thích. Tất nhiên. –

+0

@RyanMalhotra Nhưng nếu bạn đăng những gì bạn đã thử cho đến nay, Nó sẽ dễ dàng tìm thấy những sai lầm, thay vì viết tất cả các mã của chúng tôi tự. –

Trả lời

24

này là Java giải pháp Lịch dựa đầu ra

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 

nó cục bộ, trong tuần Locale của tôi bắt đầu với thứ hai

+0

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. :) –

+0

FYI, lớp 'Lịch' phiền toái giờ đây là di sản, được thay thế bởi các lớp java.time. –

4

Bạn có thể sử dụng JodaTime kiếm một giải pháp sạch hơn. Với JodaTime bạn có thể làm như sau:

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

Cảm ơn .. nhưng không thể trong lớp Calender? –

3

Hãy thử điều này

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 phiên bản

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