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

2022-09-04 06:41:14

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

这是第一个Calendar

Calendar c1 = Calendar.getInstance();

第二个Calendar

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()Fri Feb 20 20:00:00 CET 2015c2.getTime()Sun Feb 22 20:00:00 CET 2015

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


答案 1

您可以尝试以下操作:

long seconds = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000;
int hours = (int) (seconds / 3600);

或者,使用 Joda-Time API 的 Period,可以使用构造函数并检索 hours 字段:public Period(long startInstant, long endInstant)

Period period = new Period(c1.getTimeInMillis(), c2.getTimeInMillis());
int hours = period.getHours();

答案 2

在Java 8中,你可以做

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

推荐