4

我有一个每周统计系统,我想检查最后一次更新统计数据是否是上周。如果是,我想清除它。

目前,日期存储在LocalDate

LocalDate lastUpdate;

我已经有了这样的日常统计数据:

if(lastUpdate.isBefore(LocalDate.now())
{
    clearDailyStatistics();
}

我想做这样的事情:

if(/* something here? */)
{
    clearWeeklyStatistics();
}

所以,问题是:我如何比较LocalDate对象的周数?一周的形成方式不需要不同的“标准”——将使用周一到周日(Java 的DayOfWeek类已经使用)。

请只保留关于 Java 8 java.time类的评论和答案,不要保留Joda-Time或其他外部库。

4

2 回答 2

6

尝试使用WEEK_OF_WEEK_BASED_YEAR比较年份和年份中的星期:

 LocalDate now = LocalDate.now();
 if(lastUpdate.get(IsoFields.WEEK_BASED_YEAR) != now.get(IsoFields.WEEK_BASED_YEAR)
      || lastUpdate.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR) != 
                       now.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR))
于 2014-06-17T09:29:44.163 回答
0

将 7 天或 1 周添加到您的日期并与当前日期进行比较

if(lastUpdate.plusDays(7).isBefore(LocalDate.now())
{
    clearWeeklyStatistics();
}

或者

if(lastUpdate.plusWeeks(1).isBefore(LocalDate.now()){

  clearWeeklyStatistics();

  }

编辑:- 仅当您想以 7 天的周期比较一周的交叉时才考虑此解决方案,有关更多详细信息,请参阅评论。

于 2014-06-17T09:28:14.200 回答