上周是java.time.LocalDate吗?

时间:2014-06-17 09:14:40

标签: java date time java-time

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

目前,日期存储在LocalDate

LocalDate lastUpdate;

我的每日统计数据已经像这样工作:

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

我想做这样的事情:

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

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

请仅保留您对Java 8 java.time课程,Joda-Time或其他外部图书馆的评论和答案。

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:0)

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

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

OR

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

  clearWeeklyStatistics();

  }

编辑: - 只有在您希望比较7天的周期交叉时才考虑此解决方案,请参阅注释以获取更多详细信息。