问题描述
这段代码是用来做报表的,12是因为打算取12个点,输入一个开始日期和一个结束日期,然后除12,算出2个点之间的时间间隔,由于可以开始日期与结束日期不能被12整除,所以以结束时间为准向前推出开始日期。结果却发现开始日期比结束日期大?想问下到底那有问题,谢谢!int interval_unit = 0;Calendar calendar = Calendar.getInstance();SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d1 = format.parse("2011-01-10 00:23:16");Date d2 = format.parse("2011-02-10 00:23:16");long diff = d2.getTime() - d1.getTime();long hours = diff / (1000 * 60 * 60) + 1;interval_unit = (int) (hours / 12);Date d3 = new Date(d2.getTime() - (interval_unit *12* 1000 * 60 * 60));System.out.println(d3);
解决方案
Date d3 = new Date(d2.getTime() - (interval_unit * 12L * 1000 * 60 * 60)); // int 溢出了,所以被减数要转换为long型。12L表示long型的12,运算后会自动变为long,这样就没问题了。
时间: 2024-08-16 23:54:22