50,528
社区成员
发帖
与我相关
我的任务
分享
public void testTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long now = System.currentTimeMillis();
String time = sdf.format(now);
/*int的取值范围: -2147483648 ~2147483647
* sdf.format(now + 24 * 24 * 60 * 60 * 1000);
* 括号内优先计算乘法,默认是int类型,乘法结果是 2073600000
* 而df.format(now+25 * 24 * 60 * 60 * 1000);括号内乘法结果是2160000000
* 可以看出已经超出2147483647的范围,此时第2147483648个数即-2147483648,
* 第2147483649个数是-2147483647,按照这个规律,一直数到
* 第2147483647个数,此时为-2134967296,即括号内乘法结果为-2134967296,
* 这就解释了为什么你越加越小,解决方法就是将任意一个乘数变为long型,如下
* df.format(now + 25 * 24 * 60 * 60 * 1000L)
*
* */
String time1 = sdf.format(now + 24 * 24 * 60 * 60 * 1000);
String time2 = sdf.format(now + 25 * 24 * 60 * 60 * 1000);
System.out.println(time);
System.out.println(time1);
System.out.println(time2);
}