Java:如何在没有时间的情况下获得当前一周的星期一日期,并将其减去1天

Java:如何在没有时间的情况下获得当前一周的星期一日期,并将其减去1天,java,Java,我想做的是从当前一周中获取星期一的日期,然后减去1天。我不需要时间和日期。我试过下面的代码,但它给我的日期是星期天而不是星期一,而且时间也包含在日期中。谢谢 Date date = new Date(); System.out.println(date); Calendar c = Calendar.getInstance(); c.setTime(date); int dayOfWeek = c.get(Calendar.DAY_

我想做的是从当前一周中获取星期一的日期,然后减去1天。我不需要时间和日期。我试过下面的代码,但它给我的日期是星期天而不是星期一,而且时间也包含在日期中。谢谢

Date date = new Date();
        System.out.println(date);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek();
        c.add(Calendar.DAY_OF_MONTH, -dayOfWeek);

        Date weekStart = c.getTime();
        System.out.println(weekStart);

我建议使用JDK8日期时间API,这在很大程度上简化了这些计算

LocalDate dt = LocalDate.now()
                        .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
                        .minusDays(1);
System.out.println(dt);

上面的代码获取当前日期,并将其调整为当前星期的星期一,如果当前日期是星期日,则调整为前一周的星期一。然后从中减去1天,得出周日的日期。由于LocalDate API只处理日期,因此不需要考虑时间部分。

星期一的日期不是被减为1天吗,星期天的日期?避免使用java.util.Date和java.util.Calendar可能会重复我的开始。。。看看java.time包。@radimpe,我肯定你的问题是修辞性的,但是是的:或者使用DayOfWeek.SUNDAY并丢失minus days。我建议始终将可选的ZoneId对象传递到now,而不是隐式地依赖JVM的当前默认时区,该时区可以在运行时随时更改。