woaitiyu 2011-01-10 13:46
浏览 170
已采纳

时间差算出来越算越大?

这段代码是用来做报表的,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);
  • 写回答

1条回答 默认 最新

  • lang_shao 2011-01-10 14:00
    关注

    [code="java"]Date d3 = new Date(d2.getTime() - (interval_unit * 12L * 1000 * 60 * 60)); // int 溢出了,所以被减数要转换为long型。12L表示long型的12,运算后会自动变为long,这样就没问题了。
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?