Java 两个日历对象的小时数差异

Java 两个日历对象的小时数差异,java,android,calendar,simpledateformat,Java,Android,Calendar,Simpledateformat,我有两个Calendar对象,我想检查它们之间的差异,以小时为单位 这是第一个日历 Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH); c2.setTime(sdf.parse("Sun Feb 22 20:00:0

我有两个
Calendar
对象,我想检查它们之间的差异,以小时为单位

这是第一个
日历

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
c2.setTime(sdf.parse("Sun Feb 22 20:00:00 CET 2015"));
第二个
日历

Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
c2.setTime(sdf.parse("Sun Feb 22 20:00:00 CET 2015"));
现在让我们假设
c1.getTime()
是:
2015年2月20日星期五20:00:00 CET
c2.getTime()
2015年2月22日20:00:00 CET周日


那么,是否有任何代码可以返回第一个和第二个
日历
之间的时间差?在我的情况下,它应该返回
48

您可以尝试以下操作:

long seconds = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000;
int hours = (int) (seconds / 3600);
或者使用Joda Time API,您可以使用构造函数
公共时段(long startInstant,long endInstant)
并检索小时字段:

Period period = new Period(c1.getTimeInMillis(), c2.getTimeInMillis());
int hours = period.getHours();
在Java8中,您可以

long hours = ChronoUnit.HOURS.between(c1.toInstant(), c2.toInstant());

如果可能,请使用JodaTime或Java 8的Time APIjava.Time.Period需要Android中的API 26。Java.Time.temporal.ChronoUnit需要Android中的API 26。