[关闭]
@Cesar 2015-12-04T18:06:27.000000Z 字数 1023 阅读 1672

使用Java计算两个日期之间的距离

算法 Java

在实际操作中,遇到需要计算两个日期之间的天数的情况

初始版本

一开始我的想法是这样的:

此地注意,在做出发的时候要保证在1000×69×69×24后面加上l转化为long类型,否则会出现内存越界计算出错的情况。

代码如下所示:

  1. /**
  2. * 默认后面的参数靠后一些
  3. * @param date1
  4. * @param date2
  5. * @return
  6. */
  7. public static int between2Time(Date date1, Date date2) {
  8. long be = 1;
  9. be = date2.getTime() - date1.getTime();
  10. if (be <= 0) {
  11. be = 1;
  12. }
  13. int re = (int) (be / (1000 * 60 * 60 * 24l));//24后面必须加l将结果转化为long,否则会导致数据越界
  14. return re;
  15. }
  1. private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  2. private static String date1 = "2013-11-10";
  3. private static String date2 = "2013-11-11";
  4. public static void main(String[] args) throws ParseException {
  5. Date d1 = sdf.parse(date1.substring(0, 10));
  6. Date d2 = sdf.parse(date2.substring(0, 10));
  7. System.out.println(between2Time(d1, d2)+"天");
  8. }

不过始终感觉这种方法不是很好用,Java自带的日期类有点坑,而且这种方法对于不同时区会出一些差错,所以试了一下下面的方法。

更新版本

发现了一个包,joda-time,里面有关于时间的很多集成函数,做法如下:

  1. public static int between2Time2(Date date1, Date date2) {
  2. DateTime d1 = new DateTime(date1);
  3. DateTime d2 = new DateTime(date2);
  4. return Days.daysBetween(d1, d2).getDays();
  5. }

这样就简洁了很多,比较推荐使用joda-time这个工具

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注