我们如何计算前一个星期天或前一个星期日,或者一般来说如何找出 n 周之前的星期日?问题是如果今天是星期日,那么它今天应该返回为星期日而不是上周。

寻找 Joda-Time 或 Java 8 时间解决方案。

编辑:
我试过了

DateTime sunday = now
    .minusWeeks(1)
    .withDayOfWeek(DateTimeConstants.SUNDAY)
    .wi‌​thTimeAtStartOfDay()‌​;
DateTime previousWeekSunday = now
    .minusWeeks(2)
    .withDayOfWeek(DateTimeConstants.SATURDAY)
    .‌​withTime(23, 59, 59, 999);

但是如果当前是星期日,那么这个逻辑就会失败,因为它没有给出今天的日期。

最佳答案

你基本上需要检查今天是否是星期天,如果不是,然后回顾前一个......(或者如果你需要前一个日期,则递归地将日期移回......)

使用 java 8,您将需要:

  • DayOfWeek enumerator
  • TemporalAdjusters#previous

  • 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/

    10-12 17:41
    查看更多