首先说到日期相差时间的计算,就会想到两种情况!
比如说今天晚上十一点到明天凌晨一点如果按中间相差的时间是两个小时,计算差相差多少天就会出现相差零天的情况,但是如果按照2015-08-19到2015-08-20来算就是相差一天。
java计算日期这两种情况都可以实现!
第一种情况,将两个日期都换成long类型,然后相减在除以一天的毫秒数,这样可以精确到相差的秒数!
e.g.
public void differDate(Date oDate, Date nDate) {
long oldDate = oDate.getTime();//Date类型转换成long
long newDate = nDate.getTime();//Date类型转换成long
long differ = newDate - oldDate;
long lDay = 1000*24*60*60;//一天的毫秒数
long lHou = 1000*60*60; //一小时的毫秒数
long lMin = 1000*60; //一分钟的毫秒数
long lSec = 1000; //一秒钟的毫秒数
try {
long day = differ/lDay; //计算差多少天
long hou = differ%lDay/lHou; //计算差多少小时
long min = differ%lDay%lHou/lMin; //计算差多少分钟
long sec = differ%lDay%lHou%lMin/lSec;//计算差多少秒
System.out.println("相差:"+day+"天"+hou+"时"+min+"分"+sec+"秒。");
} catch (Exception e) {
e.printStackTrace();
}
}
第二种情况,需要用到Calendar这个类,这个可以直接算出两个日期相差多少天
e.g.
public void differDate(Date oDate, Date nDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(nDate);
int newDay = cal.get(Calendar.DAY_OF_YEAR);//一年中的哪一天
cal.setTime(oDate);
int oldDay = cal.get(Calendar.DAY_OF_YEAR);
int day = newDay - oldDay;
System.out.println("相差:"+day+"天");
}