检查当前时间是否为午夜/或Joda时间中的第二天



我想让程序检查当前时间是否达到午夜,然后做点什么。

我试过这个:

if (DateTime.now() == DateTime.now().withTimeAtStartOfDay()) {
    //do stuff
}

问题是,在大多数情况下,这个函数所在的方法可能不会在午夜时分被调用。有没有办法检查第二天是否发生或类似情况?

我正在尝试使用if语句对二进制文件(log4j不执行二进制)进行每日文件滚动。

由于您不知道什么时候会调用您的方法,我建议您保存日期以进行比较,并忘记时钟时间部分或午夜是否已到来。

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
}

最新更新