我正在构建一个应用程序,需要获取本月截止日期(用于填写表单)的用户列表,然后将这些用户过滤为截止日期在一周内的用户。
所以
if(isWithinAWeek(dueData)){
//alarm - 1
}
else{
//alarm - 0
}
--- 我需要帮助确保此 boolean isWithinAWeek 方法正确
public static Boolean isWithinAWeek(Date date1){
Date c1 = setTimeInDays(date1, 7);
if(c1.after(date1)){
return true;
}
return false;
}
public static Date setTimeInDays(Date startingTime, Integer days){
Calendar c = Calendar.getInstance();
c.setTime(startingTime);
c.add(Calendar.DATE, days);//a day in the future or past
return c.getTime();
}
最佳答案
您所写的条件将始终为真。 如果我简化一下就更容易看出:
public static boolean isWithinAWeek(Date date) {
return setTimeInDays(date, 7).after(date);
}
这与你的相同,只是更短。 正如您所看到的,它实际上是在说“如果日期 + 7 天在日期之后,则返回 true”。 这始终是正确的。
您想要检查现在 + 7 天是否在日期
之后,
不是日期
+ 7 天:
public static boolean isWithinAWeek(Date date) {
return setTimeInDays(new Date(), 7).after(date);
}
我还将返回类型从 Boolean
更改为 boolean
,
因为该值永远不会为空。
我建议将 setTimeInDays
重命名为 plusDays
,
因为这将类似于最新版本的 Java 中的现代日期 API
(这样当你学习它时,它就会看起来很熟悉)。
关于Java - 一周内的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627343/