Get last week date range for a date in Java

后端 未结 4 1228
一个人的身影
一个人的身影 2020-12-11 01:52

Suppose I have a Date 20 June 2013

How can I get the Date range for the last week, ie in this case 9 June to 15 June.

Also if the date was 2nd June 2013

相关标签:
4条回答
  • 2020-12-11 02:26

    Try this

    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;
        }
    
    0 讨论(0)
  • 2020-12-11 02:27

    Java 8 version

    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);
    
    0 讨论(0)
  • 2020-12-11 02:29

    You can use JodaTime for a cleaner solution. With JodaTime you can do as below:

    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 讨论(0)
  • 2020-12-11 02:35

    this is Java Calendar based solution

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

    output

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

    it's localized, in my Locale week starts with Monday

    0 讨论(0)
提交回复
热议问题