检查当前时间是否在Joda Time的午夜/或第二天?

时间:2014-09-29 09:44:50

标签: java jodatime

我希望程序检查当前时间是否达到午夜,然后再做一些事情。

我试过这个:

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

问题在于,大多数情况下,此函数所在的方法可能在午夜完全发生时无法调用。有没有办法检查第二天是否发生或类似?

我尝试使用if语句对二进制文件(而log4j不做二进制文件)进行每日文件翻转。

1 个答案:

答案 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
}