2014-09-29 111 views
3

我希望程序检查当前时间是否在午夜,然后执行某些操作。检查当前时间是午夜/还是Joda时间的第二天?

我已经试过这样:

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

的问题是,大部分的时间,这个功能的方法,可能无法得到半夜的时候恰好出现所谓的。有没有办法检查下一天是否发生或类似?

我正在尝试使用if语句为二进制文件(和log4j不执行二进制文件)执行日常文件翻转。

+3

要检查你需要的状态。请记住您检查过的最后日期,并与当前时间进行比较。 – 2014-09-29 09:45:54

回答

4

既然你不知道什么时候你的方法会被调用,我建议你保存比较的日期,并忘记时钟部分或如果午夜被击中。

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 
} 
+0

不错的解决方案。谢谢! – Hephaestus 2018-02-18 08:26:39

相关问题