千家信息网

java中怎么获取本周和上周的所有日期

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,java中怎么获取本周和上周的所有日期,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。/** * 根据当前日期获得所在周的日期区
千家信息网最后更新 2025年12月03日java中怎么获取本周和上周的所有日期

java中怎么获取本周和上周的所有日期,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

/**      * 根据当前日期获得所在周的日期区间(周一和周日日期)      */    public static Map getTimeInterval(Date date){        Map map = new HashMap<>();        Calendar cal = Calendar.getInstance();        cal.setTime(date);        // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了          int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天          if(1 == dayWeek){            cal.add(Calendar.DAY_OF_MONTH,-1);        }        // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一          cal.setFirstDayOfWeek(Calendar.MONDAY);        // 获得当前日期是一个星期的第几天          int day = cal.get(Calendar.DAY_OF_WEEK);        // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值          cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);        Long imptimeBegin = cal.getTime().getTime();        cal.add(Calendar.DATE,6);        Long imptimeEnd = cal.getTime().getTime();        map.put("start", imptimeBegin);        map.put("end", imptimeEnd);        return map;    }    /**      * 根据当前日期获得上周的日期区间(上周周一和周日日期)      */    public static Map getLastTimeInterval(Date date){        Map map = new HashMap<>();        Calendar calendar1 = Calendar.getInstance();        Calendar calendar2 = Calendar.getInstance();        calendar1.setTime(date);        calendar2.setTime(date);        int dayOfWeek = calendar1.get(Calendar.DAY_OF_WEEK) - 1;        if(dayOfWeek <= 0){            dayOfWeek = 7;        }        int offset1 = 1 - dayOfWeek;        int offset2 = 7 - dayOfWeek;        calendar1.add(Calendar.DATE, offset1 - 7);        calendar2.add(Calendar.DATE, offset2 - 7);        // last Monday        Long lastBeginDate = calendar1.getTime().getTime();        // last Sunday          Long lastEndDate = calendar2.getTime().getTime();        map.put("laststart", lastBeginDate);        map.put("lastend", lastEndDate);        return map;    }    /**     * 获取本周开始时间     * @return     */    public static Long getWeekStart(){        Map map = getTimeInterval(new Date());        return map.get("start");    }    /**     * 获取本周结束时间     * @return     */    public static Long getWeekEnd(){        Map map = getTimeInterval(new Date());        return map.get("end");    }    /**     * 获取上周开始时间     * @return     */    public static Long getLastWeekStart(){        Map map = getLastTimeInterval(new Date());        return map.get("laststart");    }    /**     * 获取上周结束时间     * @return     */    public static Long getLastWeekEnd(){        Map map = getLastTimeInterval(new Date());        return map.get("lastend");    }/**     * 获取时间范围里面时间戳     * @param dBegin     * @param dEnd     * @return     */    public static List listTimeStamp(Long dBegin, Long dEnd)    {        List lDate = new ArrayList();        lDate.add(dBegin);        Calendar calBegin = Calendar.getInstance();        // 使用给定的 Date 设置此 Calendar 的时间        calBegin.setTime(new Date(dBegin));        Calendar calEnd = Calendar.getInstance();        // 使用给定的 Date 设置此 Calendar 的时间        calEnd.setTime(new Date(dEnd));        // 测试此日期是否在指定日期之后        while (dEnd > calBegin.getTime().getTime())        {            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量            calBegin.add(Calendar.DAY_OF_MONTH, 1);            lDate.add(calBegin.getTime().getTime());        }        return lDate;    }    public static void main(String[] args){        Long t = SalesTimeUtil.dateToStamp("20191028", "yyyyMMdd");        // 本周时间范围        System.out.println(getTimeInterval(new Date(t)));        // 上周时间范围        System.out.println(getLastTimeInterval(new Date(t)));        System.out.println(formatYyyyMMdd(getWeekStart()));        System.out.println(formatYyyyMMdd(getWeekEnd()));        System.out.println(formatYyyyMMdd(getLastWeekStart()));        System.out.println(formatYyyyMMdd(getLastWeekEnd()));    }

{start=1572192000000, end=1572710400000}{lastend=1572105600000, laststart=1571587200000}本周:20191028,20191103上周:20191021,201910271572234212622:201910281572320612622:201910291572407012622:201910301572493412622:201910311572579812622:201911011572666212622:201911021572752612622:20191103

看完上述内容,你们掌握java中怎么获取本周和上周的所有日期的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0