我希望程序检查当前时间是否达到午夜,然后再做一些事情。
我试过这个:
if (DateTime.now() == DateTime.now().withTimeAtStartOfDay()) {
//do stuff
}
问题在于,大多数情况下,此函数所在的方法可能在午夜完全发生时无法调用。有没有办法检查第二天是否发生或类似?
我尝试使用if语句对二进制文件(而log4j不做二进制文件)进行每日文件翻转。
答案 0 :(得分:5)
由于您不知道何时会调用您的方法,我建议您保存比较日期并忘记时钟时间部分或午夜时间点击。
private LocalDate lastCheck = null;
public boolean isNewDay() {
LocalDate today = LocalDate.now();
boolean ret = lastCheck == null || today.isAfter(lastCheck);
lastCheck = today;
return ret;
}
好吧,对于在方法调用期间遇到午夜的问题,您可以使用以下方案:
DateTime now = DateTime.now();
DateTime startOfDay = now.withTimeAtStartOfDay();
DateTime latest = startOfDay.plusMinutes(1); // tolerance, you can adjust it for your needs
if (new Interval(startOfDay, latest).contains(now)) {
// do stuff
}