Java Date增加毫秒值获取一定天数之后的Date问题

想要获取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)+"日");

img


这样试试呢

你要明白java默认的整形是int
所以你的100*24*60*60*1000得到的是int行,这个值其实已经超过了int的最大值了,
所以实际强转的值是小于你的真实值的。

所以如果你要这样算的话,可以试试 100L*24*60*60*1000
表明第一个值就是long类型,后面都是long类型的计算。

希望对你有帮助...