我有一个java Multimap,其中包含映射到开始日期和结束日期的标识符。
SetMultiMap<String,List<Date>> mymap = LinkedHashMultimap.create();
我在另一种方法中使用此地图,我想要检索结束日期少于1周前的所有密钥。
我试过了:
DateTime lastWeek_joda = new DateTime().minusDays(7);
Date end_date = lastWeek_joda.toDate();
现在我按以下方式迭代:
for (Map.Entry<String,List<date>> entry : mymap.entries())
String key = entry.getKey();
List<Date> value = entry.getValue();
if (end_date.equals(value.get(1))) {
key_set.add(key);
}
}
这不会给我预期的结果吗? 这可以更容易/不同吗?提前谢谢。
答案 0 :(得分:2)
您正在检查与周前日期完全相同的日期。 相反,使用compareTo并检查周前日期是否大于(晚于)当前值。
for (Map.Entry<String,List<date>> entry : mymap.entries())
String key = entry.getKey();
List<Date> value = entry.getValue();
if (end_date.compareTo(value.get(1)) > 0) {
key_set.add(key);
}
}
答案 1 :(得分:1)
for (Map.Entry<String,List<date>> entry : mymap.entries())
String key = entry.getKey();
List<Date> value = entry.getValue();
if (checkDateRange(value.get(1))) {
key_set.add(key);
}
}
public boolean checkDateRange(Date tDate) {
Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
int i = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek();
c.add(Calendar.DATE, -i - 7);
Date start = c.getTime();
c.add(Calendar.DATE, 6);
Date end = c.getTime();
//your logic goes here
if(start<=tDate<=end){
return true;
}
return false;
}