获取一周中的上一个特定日期

Jav*_*ner 6 java calendar date simpledateformat

我的报告页面使用 java date java.util.Calendar 和 java.text.SimpleDateFormat 。

我想始终将开始日期设置为上一个星期六,并将结束日期设置为该星期六之后的星期五。

我写了一个 Java 代码来检查这个并按如下方式执行,但我确信它的逻辑是错误的

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar         cal = Calendar.getInstance();
cal.add(Calendar.DATE, -7);
setToDate(sdf.format(cal.getTime()));
cal.add(Calendar.DATE, -6);
setFromDate(sdf.format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)

如何获取上一个 FromDate(yyyy-mm-dd) 和 ToDate(yyyy-mm-dd) 其中 FromDate 应该是上周六,ToDate 应该是上周五。

情况1

案例二

tag*_*mer 1

int daysBackToSat = cal.get(Calendar.DAY_OF_WEEK );

cal.add(Calendar.DATE, daysBackToSat*-1);
System.out.println(sdf.format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)

在第 1 行中,您会得到一个指示当前星期几的数字。1 表示星期日,7 表示星期六,6 表示星期五,依此类推。如果今天是星期三,您将得到 4。由于星期六是 7 并且 tehre 不是“第 0 天”,因此您从当前日期中减去 4 天(第 2 行)。为了得到星期六后的下一个星期五,您只需添加 6 天。

编辑:考虑到你的更新,我发现,如果是星期三,你不想在那之前有星期六,但要提前 1 周。如果已经是星期六,您将只返回 1 周。在这种情况下,您检查“daysBackToSat”是否为 7,则保留该值,如果小于 7,则再添加 7。

        if(daysBackToSat<7) {
            daysBackToSat += 7;
        }
Run Code Online (Sandbox Code Playgroud)