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