当前时间是  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我如果减去一个星期的是对的  一个月就错误了 这个怎么用呢?我看时间相减基本是用这种方法的啊?

解决方案 »

  1.   

    private static long getEndTimePoint(String dateStr, int cyc)这个方法,你定义的cyc 是int 类型
    在 long dvalue = (date.getTime()) - (cyc * 60 * 1000); 可能出现错误,
    具体原理我也不太清楚,望达人解答把cyc改成long类型,程序就可以了 
      

  2.   

    这个里面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))));
      

  3.   

    这种转换使用 TimeUnit。
     TimeUnit.DAYS.toMillis(30L); // 30天对应的毫秒数。