想要获取100天以后的Date,代码如下
Date date = new Date(System.currentTimeMillis()+100*24*60*60*1000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(date);
System.out.println(s);
当前日期是2021-10-27,打印出来却是2021-10-28
后面又测试了一下,增加的毫秒值不能超过24天。超过后日期就会递减,不太明白是什么原因呢
用Calendar类
/*
* 1、先给定一个时间,例如2017年1月1日
*/
Calendar cld = Calendar.getInstance();
cld.set(Calendar.YEAR, 2017);
cld.set(Calendar.MONDAY,0);
cld.set(Calendar.DATE,1);
//调用Calendar类中的add(),增加时间量
cld.add(Calendar.DATE, 100);
System.out.println("增加100天的日期为:"+cld.get(Calendar.YEAR)+"年"+cld.get(Calendar.MONTH)+"月"+cld.get(Calendar.DATE)+"日");
你要明白java默认的整形是int
所以你的100*24*60*60*1000
得到的是int行,这个值其实已经超过了int的最大值了,
所以实际强转的值是小于你的真实值的。
所以如果你要这样算的话,可以试试 100L*24*60*60*1000
;
表明第一个值就是long类型,后面都是long类型的计算。
希望对你有帮助...