Во-первых, в вашем примере вы хотели бы это для простоты:
if (dt.getHourOfDay() == 12 && dt.getMinuteOfHour() == 0) {
}
Или возможно:
if (dt.getHourOfDay() == 12 && dt.getMinuteOfHour() >= 0 && dt.getMinuteOfHour() < 1) {
}
Если вы не хотите, чтобы непосредственно сравнивать, вы можете создайте два момента, соответствующие времени, которое вы хотели, и используйте методы isBefore и isAfter AbstractInstant, или isBeforeNow, isAfterNow. Что-то вроде:
Instant todayMidnight = new DateMidnight().toInstant();
Instant earliest = todayMidnight.plus(Hours.hours(6).toStandardDuration());
Instant latest = todayMidnight.plus(Hours.hours(15).toStandardDuration());
if (latest.isAfterNow() && earliest.isBeforeNow()) {
// Execute
}
Немного запутано, так как вы должны построить объект todayMidnight неоднократно, но очень ясно whaty ou're делать.
Но что вы на самом деле пытаетесь сделать? Вы пытаетесь запустить что-то в стиле «cron»? Или ограничить доступ к некоторому коду определенному времени суток? В зависимости от этого может быть лучший способ.
В принципе, я хочу бежать программу между 6am и 3pm. Предпосылка программы - найти погоду между этими временами. –
Я боюсь, что второй код не работает. Я получаю следующее сообщение: «Метод plus (long) в типе Instant не применим для аргументов (Hours)» –
ETA: toStandardDuration(), который, я думаю, должен исправить , (Я не компилирую его, так или иначе). – James