今天即将到期的Java日期

new*_*bie 6 java date

我需要检查给定日期是否在今天23:59:59之后,如何创建今天23:59:59的日期对象?

And*_*yle 5

使用java.util.Calendar

Calendar cal = Calendar.getInstance(); // represents right now, i.e. today's date
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999); // credit to f1sh

Date date = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

不过,我认为您可能会从错误的角度来解决这个问题。与其尝试创建一个在午夜之前一个原子的Date实例,不如尝试一种更好的方法是创建一个代表午夜的Date并测试当前时间是否严格小于该时间。我认为,就您对其他阅读此代码的人的意图而言,这会更加清楚。


另外,您可以使用第三方Date API,该API知道如何转换回日期。通常,Java的内置日期API在许多方面都存在缺陷。我不建议仅使用另一个库来执行此操作,但是如果您必须进行大量日期操作和/或已经在使用Joda Time这样的库,则可以更简单地表达这个概念。例如,乔达时间(Joda Time)具有一个DateMidnight类,该类可以轻松地与您正在执行的“原始”日期进行比较,而不会出现细微的问题(例如在我的第一次剪切中未设置毫秒)。