当愚人节遇上BUG

kgblue 2017-04-02 01:29:19
今天下班路上,接到同事电话,说数据没上来。我一想,只是把15天改成了30天,又没改流程,不应该啊。。。
回家一查日志:结束时间不能小于开始时间
实现逻辑里面,结束时间=开始时间+间隔周期(15天改成了30天),为什么加了后反而还变小老了???
核查了三个小时,写了个测试类,结果见图:
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大隐藏于寺 2017-04-02
  • 打赏
  • 举报
回复
引用 1 楼 u011055132 的回复:
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);
	
	}
	
上面注释里面有个错误:"第2147483647个数,此时为-2134967296,即括号内乘法结果为-2134967296," 应该是是第2160000000个数是-2134967296
大隐藏于寺 2017-04-02
  • 打赏
  • 举报
回复
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);
	
	}
	

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧