在毫秒日期中添加/减去毫秒天

时间:2019-05-25 05:15:59

标签: java date

我将天数转换为毫秒:-

  

天* 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

我不知道为什么要得到这个输出。请帮助我。

1 个答案:

答案 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();