Java 使用日历对象从当前日期减去天数
我试图使用java.util.Calendar对象从当前日期中减去天数。我的问题是要减去的天数可以是正的,也可以是负的。我的代码如下Java 使用日历对象从当前日期减去天数,java,date,calendar,Java,Date,Calendar,我试图使用java.util.Calendar对象从当前日期中减去天数。我的问题是要减去的天数可以是正的,也可以是负的。我的代码如下 public class Test { public static void main(String[] args) { int pastValidationDays=2; Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DA
public class Test {
public static void main(String[] args) {
int pastValidationDays=2;
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, - pastValidationDays);
}
}
根据上述代码,如果日期为2015年1月20日,则将给我2015年1月18日
现在假设pastValidationDays=-2(负值),那么它也应该从当前日期中减去。如果我说
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, - pastValidationDays);
然后将天数相加,而不是减去。如果当前日期为2015年1月20日,则为2015年1月22日。但在这种情况下,我也需要日期为2015年1月18日
我正在做的一个方法如下
if (pastValidationDays < 0){
calendar.add(Calendar.DAY_OF_MONTH, pastValidationDays);
}else{
calendar.add(Calendar.DAY_OF_MONTH, -pastValidationDays);
}
我只想使用calendar对象减去天数。我不想使用乔达时间和其他物体。如有其他方法,请提出建议。提前感谢
calendar.add(calendar.DAY\u OF_MONTH,-Math.abs(pastValidationDays))代码>看起来不错。为了清晰起见,可以使用一个临时变量:int numberOfDaysToSubtract=abs(pastValidationDays)代码>。但是,完全摆脱这种逻辑,只向方法传递适当的(肯定的)参数,这难道没有意义吗?是的,只需使用abs。在if和abs之间,abs更简短>更容易理解>更好。但正如assylias所说,最好限制该方法的“合法”参数,使其语义更简单。我的意思是,类似于“此方法返回的日期比今天早,天数等于参数的绝对值”这比“此方法返回的日期[参数]比今天早几天”更复杂
calendar.add(Calendar.DAY_OF_MONTH, - Math.abs(pastValidationDays));