时间相减 问题?不知道怎么回事?请大侠们帮助!
当前时间是 2011-10-06 16:24:15转毫秒 - (42300 * 60 * 1000) 应该是 九月才对啊 怎么是十月25号了
public static void main(String[] args) {
getEndTimePoint("2011-10-05 08:21:28",42300);//42300是一个月的分钟
}
private static long getEndTimePoint(String dateStr, int cyc)
{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = null;
try
{
date = simpleDateFormat.parse(dateStr);
}
catch (ParseException e)
{
e.printStackTrace();
}
long dvalue = (date.getTime()) - (cyc * 60 * 1000);
System.out.println(simpleDateFormat.format(new Date((date.getTime()) - (cyc * 60 * 1000))));
return dvalue;
}
这里打印出来怎么是 2011-10-25 16:24:15
我如果减去一个星期的是对的 一个月就错误了 这个怎么用呢?
我看时间相减基本是用这种方法的啊?
[解决办法]
private static long getEndTimePoint(String dateStr, int cyc)
这个方法,你定义的cyc 是int 类型
在 long dvalue = (date.getTime()) - (cyc * 60 * 1000); 可能出现错误,
具体原理我也不太清楚,望达人解答
把cyc改成long类型,程序就可以了
[解决办法]
这个里面cyc * 60 * 1000 都是int类型,所以相乘的结果也是int类型,我试了一下,24天可以的,到25天就溢出了,所以改成下面就可以了
long dvalue = (date.getTime()) - (cyc * 60 * 1000l);
System.out.println(simpleDateFormat.format(new Date((date.getTime()) - (cyc * 60 * 1000l))));
[解决办法]
这种转换使用 TimeUnit。
TimeUnit.DAYS.toMillis(30L); // 30天对应的毫秒数。