如何计算两个日期之间的天数、小时数、分钟数和秒数
How to get difference between 2 dates in number of days,hours,minutes and seconds
我想获得 2 个给定日期之间的天数、小时数和分钟数,到目前为止我已经尝试了 3 种不同的方法,但是 none 给了我正确的 value.Please 让我知道如何获取 2 个给定日期之间的天数、小时数和分钟数。
在所有方面输入估计日期是 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
又错了。
预期输出
当前时间是 2:48 3 月 9 日下午
从2015年2月21日中午12点到2月22日中午12点:1天
从2015年2月22日中午12点到2月23日中午12点: 2天
所以到今天中午12点天数=16
小时数=2
分钟数=50
如果我答对了你的问题,这就是你要找的
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 可能很容易完成(可能!)但也可以通过这种方式完成
希望这对您有所帮助!
祝你好运
我想获得 2 个给定日期之间的天数、小时数和分钟数,到目前为止我已经尝试了 3 种不同的方法,但是 none 给了我正确的 value.Please 让我知道如何获取 2 个给定日期之间的天数、小时数和分钟数。
在所有方面输入估计日期是 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
又错了。
预期输出
当前时间是 2:48 3 月 9 日下午
从2015年2月21日中午12点到2月22日中午12点:1天
从2015年2月22日中午12点到2月23日中午12点: 2天
所以到今天中午12点天数=16
小时数=2
分钟数=50
如果我答对了你的问题,这就是你要找的
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 可能很容易完成(可能!)但也可以通过这种方式完成
希望这对您有所帮助! 祝你好运