使用JodaTime快速判断当前时间是否在午夜6小时之内

时间:2012-02-24 15:56:34

标签: java jodatime

所以我在一个应用程序中使用JodaTime,我需要一种方法来判断当前时间是否在午夜6小时之内。实际上我需要知道时间是否在凌晨2点的8小时内,但是JodaTime似乎在午夜提供了一个常数,所以我在看那个。无论如何,我尝试了很多不同的东西,但没有什么可行的。任何帮助或指示将不胜感激。

4 个答案:

答案 0 :(得分:3)

这可以简单地通过使用JodaTime而不需要任何数学来完成。

DateTime time = new DateTime(DateTimeZone.UTC);

Period period = new Period(time, time.plusDays(1).toDateMidnight());
System.out.println(period.getHours());

time.plusDays(1).toDateMidnight()(是的,我很懒),是因为我要比较下一个午夜,而不是今天的午夜(已经过去了)。

如果您想要检查前后两个,请检查两个时段。

答案 1 :(得分:1)

我建议使用DateTime对象。

DateTime date = new DateTime();
int i = getSecondOfDay();

然后使用一点数学,我们可以找到下午6点的秒数。 18小时* 60分钟* 60秒= 64800秒。

if ( i > 64800 ){
   // Do what you need here 
}

我认为您需要判断当天是上午8点,而不是特定的一天。

答案 2 :(得分:1)

这有点硬编码,pcalcao的答案可能更灵活:

private static boolean isLessThan8HoursFrom2AM(DateTime date) {
    return (date.getHourOfDay() >= 18 || date.getHourOfDay() < 10);
}

答案 3 :(得分:1)

您还可以检查一天中午的时间是否为6小时。

if(Math.abs(timeOfDay - 43200) >= 21600) // first or last 6 hours of day.