How to get difference between two dates in Days, Hours (24), Minutes (60), Seconds(60) in android
如何获取天,小时(24),分钟(60),秒(60)中两个日期之间的差异。
和
我一直在经历
Android两个日期之间的差异
如何在android中获取两个日期之间的差额?尝试所有操作并发布
但没有帮助
这是我的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | try { String FinalDate ="20-04-2018 08:00:00"; String CurrentDate ="26-04-2018 10:10:30"; Date date1; Date date2; SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); date1 = dates.parse(CurrentDate); date2 = dates.parse(FinalDate); /*long difference = date1.getTime() - date2.getTime(); long differenceInMinutes = difference / (60 * 1000); long differenceInSeconds = difference / 1000; String strMinuteDifference = Long.toString(differenceInMinutes); String strSecondsDifference = Long.toString(differenceInSeconds);*/ long difference = date1.getTime() - date2.getTime(); long seconds = difference / 1000; long minutes = seconds / 60; long hours = minutes / 60; long days = hours / 24; Log.e("TAG_5","CurrentDate is :" + date1); Log.e("TAG_5","Final date is :" + date2); Log.e("TAG_5","Day Difference:" + days); Log.e("TAG_5","hours Difference:" + hours); Log.e("TAG_5","Minute Difference:" + minutes); Log.e("TAG_5","Seconds Difference:" + seconds); } catch (Exception exception) { Log.e("TAG_5","exception" + exception); } |
输出是
1 2 3 4 5 6 | E/TAG_5: CurrentDate is : Thu Apr 26 10:10:30 GMT+05:30 2018 E/TAG_5: Demo date is : Fri Apr 20 08:00:00 GMT+05:30 2018 E/TAG_5: Day Difference: 6 E/TAG_5: hours Difference: 146 E/TAG_5: Minute Difference: 8770 E/TAG_5: Seconds Difference: 526230 |
它似乎就像代码是计算这两个日期之间的所有小时,分钟,秒,但是
我希望输出像...
小时应该是2小时,10小时或23小时,但不能超过24小时,因为25小时是新的一天,所以应该是1天1小时。
分钟为10分钟35分钟或59分钟,但不超过60分钟
同样是秒,应该是12秒,40秒或59秒,但不超过60秒。
那么我该如何实现呢?
计算您所说的"休息"时间。 (因此,在24小时以下)您可以使用模。
In computing, the modulo operation finds the remainder after division
of one number by another (sometimes called modulus).
在你的例子中
1 2 3 4 | Log.e("TAG_5","Day Difference:" + days); Log.e("TAG_5","hours Difference:" + hours % 24); Log.e("TAG_5","Minute Difference:" + minutes % 60); Log.e("TAG_5","Seconds Difference:" + seconds % 60); |
资料来源:维基百科
试试这个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public void printDifferenceDateForHours(Date startDate, Date endDate) { //milliseconds long different = endDate.getTime() - startDate.getTime(); long secondsInMilli = 1000; long minutesInMilli = secondsInMilli * 60; long hoursInMilli = minutesInMilli * 60; long daysInMilli = hoursInMilli * 24; //TODO Here you will get the days long elapsedDays = different / daysInMilli; different = different % daysInMilli; //TODO Here you will get the hours long elapsedHours = different / hoursInMilli; different = different % hoursInMilli; //TODO Here you will get the minute long elapsedMinutes = different / minutesInMilli; different = different % minutesInMilli; //TODO Here you will get the second long elapsedSeconds = different / secondsInMilli; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | try { String FinalDate ="20-04-2018 08:00:00"; String CurrentDate ="26-04-2018 10:10:30"; Date date1; Date date2; SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); date1 = dates.parse(CurrentDate); date2 = dates.parse(FinalDate); long seconds = 1000; long minutes = 60 * seconds; long hours = 60 * minutes; long days = 24 * hours; long weeks = 7 * days; long months = 30 * days; long year = 365 * days; long difference = date1.getTime() - date2.getTime(); long differenceInDays = difference / days; difference = difference - (differenceInDays * days); long differenceInHours = (difference) / hours; difference = difference - (differenceInHours * hours); long differenceInMin = (difference) / minutes; difference = difference - (differenceInMin * minutes); long differenceInSecond = difference / seconds; Log.e("TAG_5","CurrentDate is :" + date1); Log.e("TAG_5","Final date is :" + date2); Log.e("TAG_5","Day Difference:" + differenceInDays); Log.e("TAG_5","hours Difference:" + differenceInHours); Log.e("TAG_5","Minute Difference:" + differenceInMin); Log.e("TAG_5","Seconds Difference:" + differenceInSecond); } catch (Exception exception) { Log.e("TAG_5","exception" + exception); } |
在这里,我只计算了天,月,分钟,秒,就可以以相同的方式计算年,月,周
您可以这样做,希望对您有所帮助。 谢谢
1 2 3 4 5 6 7 8 9 10 11 12 | String CurrentDate ="26-04-2018 10:10:30"; String FinalDate ="20-04-2018 08:00:00"; long diffInMillisec = CurrentDate.getTime() - FinalDate.getTime(); long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMillisec); seconds = diffInSec % 60; diffInSec/= 60; minutes =diffInSec % 60; diffInSec /= 60; hours = diffInSec % 24; diffInSec /= 24; days = diffInSec;` |
1.
2.执行
采用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | long difference="your difference result here"; long seconds =1000; long minutes =60*seconds; long hours = 60*minutes; long days = 24*hours; long weeks=7*days; long months=30*days; long year=365*days; if(difference>year) { Log.d("year", String.valueOf(difference / year)); difference = difference % year; } if(difference>months) { Log.d("months", String.valueOf(difference / months)); difference = difference % months; } if(difference>weeks) { Log.d("weeks", String.valueOf(difference / weeks)); difference = difference % weeks; } if(difference>days) { Log.d("days", String.valueOf(difference / days)); difference = difference % days; } if(difference>hours) { Log.d("hours", String.valueOf(difference / hours)); difference = difference % hours; } if(difference>minutes) { Log.d("minutes", String.valueOf(difference / minutes)); difference = difference % minutes; } if(difference>0) Log.d("seconds", String.valueOf(difference/seconds )); |
您可以使用两个日期的纪元时间(unix时间戳),并使用模(%-余数)运算符自己计算天,小时,分钟和短信的差值。