如何在天数,小时数,分钟数和秒数之间获得2个日期之间的差异

时间:2015-03-09 09:04:38

标签: java jodatime

我想获得两个给定日期之间的天数,小时数和分钟数,到目前为止,我已经尝试了3种不同的方法,但没有一个给我正确的价值。请让我知道如何获得天数,小时和两个特定日期之间的分钟数。

在所有方面输入estdate是星期二2月21日12:00:00 IST 2015 第一路

Date estDate=//date object which returns Sat Feb 21 12:00:00 IST 2015
long estDateInLong=estDate.getTime();
    long currentTimeinLong=Calendar.getInstance().getTimeInMillis();
    Long diff=currentTimeinLong-estDateInLong;
    long diffSeconds = diff / 1000 % 60;  //gives 6
    long diffMinutes = diff / (60 * 1000) % 60; //gives 21
    long diffHours=diff/(60*60 * 1000) % 60;//gives 26
    long diffDay=diff/(24*60*60 * 1000) % 60;//gives 16

这是错的,所以我再次尝试以下方式

Period p=new Period(new LocalDate(estDate)), new LocalDate(currentDate);
System.out.println(p.getDays());System.out.println(p.getHours());System.out.println(p.getMinutes());

输出中

2
0
0

第三种方式

int delayTimeInDays=Days.daysBetween(new LocalDate(estDate), new LocalDate(currentDate).getDays();
    int delayTimeinHours=Hours.hoursBetween(new LocalDate(estDate), new LocalDate(currentDate).getHours();
    int seconds=Seconds.secondsBetween(new LocalDate(estDate), new LocalDate(currentDate)).getSeconds();

给了我16,384,1382400

这又是错误的。

预期输出

当前时间是9月3日下午2点48分

从2015年2月21日中午12点到22点12点中午:1天

从2015年2月22日中午12点到23点12点中午:2天

所以直到今天中午12点= 16

小时数= 2

分钟数= 50

1 个答案:

答案 0 :(得分:3)

如果我的问题正确,那么这就是你要找的东西

long estDateInLong=//whatever gives you past date
long currentTimeinLong=Calendar.getInstance().getTimeInMillis();
long diff=(long)(currentTimeinLong-estDateInLong);
long diffDay=diff/(24*60*60 * 1000);
diff=diff-(diffDay*24*60*60 * 1000); //will give you remaining milli seconds relating to hours,minutes and seconds
long diffHours=diff/(60*60 * 1000);
diff=diff-(diffHours*60*60 * 1000); 
long diffMinutes = diff / (60 * 1000);
diff=diff-(diffMinutes*60*1000);
long diffSeconds = diff / 1000;
diff=diff-(diffSeconds*1000);       
System.out.println(diffDay +"\t"+diffHours+"\t"+diffMinutes+"\t"+diffSeconds);

使用Joda(可能是!)可能很容易做到,但也可以这样做

希望这有帮助! 祝你好运