我们如何计算前一个星期天或前一个星期日,或者一般来说如何找出 n 周之前的星期日?问题是如果今天是星期日,那么它今天应该返回为星期日而不是上周。
寻找 Joda-Time 或 Java 8 时间解决方案。
编辑:
我试过了
DateTime sunday = now
.minusWeeks(1)
.withDayOfWeek(DateTimeConstants.SUNDAY)
.withTimeAtStartOfDay();
DateTime previousWeekSunday = now
.minusWeeks(2)
.withDayOfWeek(DateTimeConstants.SATURDAY)
.withTime(23, 59, 59, 999);
但是如果当前是星期日,那么这个逻辑就会失败,因为它没有给出今天的日期。
最佳答案
你基本上需要检查今天是否是星期天,如果不是,然后回顾前一个......(或者如果你需要前一个日期,则递归地将日期移回......)
使用 java 8,您将需要:
LocalDate date = LocalDate.now();
DayOfWeek todayAsDayOfWeek = date.getDayOfWeek();
LocalDate prevSun = todayAsDayOfWeek == DayOfWeek.SUNDAY ? date : date.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));
System.out.println(prevSun);
编辑:previousOrSame 方法将跳过实际星期几的检查
LocalDate date = LocalDate.now();
LocalDate prevSun = date.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY));
prevSun = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY));
System.out.println(prevSun);
关于java - 如何使用 Java 日期时间 API 或 Joda 时间查找前一个星期日?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44321520/