@Cesar
2015-12-04T10:06:27.000000Z
字数 1023
阅读 1869
算法 Java在实际操作中,遇到需要计算两个日期之间的天数的情况
一开始我的想法是这样的:
此地注意,在做出发的时候要保证在1000×69×69×24后面加上l转化为long类型,否则会出现内存越界计算出错的情况。
代码如下所示:
/*** 默认后面的参数靠后一些* @param date1* @param date2* @return*/public static int between2Time(Date date1, Date date2) {long be = 1;be = date2.getTime() - date1.getTime();if (be <= 0) {be = 1;}int re = (int) (be / (1000 * 60 * 60 * 24l));//24后面必须加l将结果转化为long,否则会导致数据越界return re;}
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");private static String date1 = "2013-11-10";private static String date2 = "2013-11-11";public static void main(String[] args) throws ParseException {Date d1 = sdf.parse(date1.substring(0, 10));Date d2 = sdf.parse(date2.substring(0, 10));System.out.println(between2Time(d1, d2)+"天");}
不过始终感觉这种方法不是很好用,Java自带的日期类有点坑,而且这种方法对于不同时区会出一些差错,所以试了一下下面的方法。
发现了一个包,joda-time,里面有关于时间的很多集成函数,做法如下:
public static int between2Time2(Date date1, Date date2) {DateTime d1 = new DateTime(date1);DateTime d2 = new DateTime(date2);return Days.daysBetween(d1, d2).getDays();}
这样就简洁了很多,比较推荐使用joda-time这个工具
