我将天数转换为毫秒:-
天* 24 * 60 * 60 * 1000
当我减去/添加一天时,输出正确,如-
Date d= new Date(); // Sat May 25 10:16:38 IST 2019
Date d1 = new Date(d.getTime() + 1 * 24 * 3600 * 1000); //Sun May 26 10:16:38 IST 2019
Date d1 = new Date(d.getTime() - 1 * 24 * 3600 * 1000); //Sun May 25 10:16:38 IST 2019
但是加/减会产生不适当的输出,当我今天尝试加/减的时候(例如今天是5月25日)
Date d= new Date();
Date newDate = new Date(d.getTime() + 25 * 24 * 3600 * 1000); //Tue Apr 30 17:36:35 IST 2019
newDate = new Date(d.getTime() - 25 * 24 * 3600 * 1000); //Wed Jun 19 03:42:10 IST 2019
我不知道为什么要得到这个输出。请帮助我。
答案 0 :(得分:1)
25 * 24 * 3600 * 1000等于int格式的2160000000(倍数中的所有参数均为int),并且使此操作无效。
您应该将类型转换为长格式,并将其传递给新的Date构造函数。
例如25天后:
Date d= new Date();
Date newDate = new Date(d.getTime() + 25L * 24 * 3600 * 1000); //Tue Apr 30 17:36:35 IST 2019
但是在您的时间之后25天,更好的解决方案是:
Date d = new Date();
Calendar c = Calendar.getInstance();
c.setTime( d );
c.add( Calendar.DAY_OF_YEAR , +25 );
Date newDate = c.getTime();