检查两个时间点是否在不同的相邻日期

时间:2013-06-17 19:59:47

标签: java android date

如何确定两个时间点之间是否存在一个午夜。也就是说,这两个点在不同的相邻日子里?

我很容易存储UNIX时间戳并检查24h差异,但我需要的是在2个时间戳之间进行检查,例如周一23:00h和周二02:00h,差异必须是一天,与周一之间相同10:00h和周二19:00h

2 个答案:

答案 0 :(得分:1)

我总是使用joda在Java中进行日期/时间操作。使用joda,您的代码是:

if (Days.daysBetween(new DateTime(myFirstJavaUtilDateOrMiliseconds), new DateTime(mySecondJavaUtilDateOrMiliseconds)).getDays()) == 1) { // 1 day difference
} else { // not so much
}

当然,如果您使用的是JDK日期类并且无法使用Joda,请接受不同的答案。

答案 1 :(得分:1)

我终于选择了@AlexWien的回答,由于某种原因已被删除。

@ hd1 joda很不错,但这是一个Android项目,而且库太重了,我只会在这里使用它。

这就是我选择GregorianCalendar方法的原因:

public static int daysApart(long first, long second){
    GregorianCalendar gc=new GregorianCalendar(TimeZone.getTimeZone("UTC"));

    gc.setTimeInMillis(first);
    int day1=gc.get(GregorianCalendar.DAY_OF_YEAR);

    gc.setTimeInMillis(second);
    int day2=gc.get(GregorianCalendar.DAY_OF_YEAR);

    return day2-day1;
}