这就是我想要做的事情:
Date currentDate = new Date();
Date eventStartDate = event.getStartDate();
Run Code Online (Sandbox Code Playgroud)
如何检查eventStartDate是否比currentDate早30天?
我使用的是Java 8,不希望使用Calendar.
时区是ZoneId.systemDefault().
好的,假设您确实希望它在默认时区内"30天",我会使用类似的东西:
// Implicitly uses system time zone and system clock
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime thirtyDaysAgo = now.plusDays(-30);
if (eventStartDate.toInstant().isBefore(thirtyDaysAgo.toInstant())) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果"三十天前"是围绕DST更改,您需要检查文档是否plusDays为您提供了所需的行为:
转换回ZonedDateTime时,如果本地日期时间处于重叠状态,则尽可能保留偏移量,否则将使用较早的偏移量.如果在间隙中,则本地日期时间将按间隙的长度向前调整.
或者你可以减去30"24小时"的天数,这肯定会更简单,但可能会在DST变化方面产生意想不到的结果.
你可以试试这个:
Date currentDate = new Date();
Date eventStartDate = event.getStartDate();
long day30 = 30l * 24 * 60 * 60 * 1000;
boolean olderThan30 = currentDate.before(new Date((eventStartDate .getTime() + day30)));
Run Code Online (Sandbox Code Playgroud)
这很伪装,但它应该可以完成工作!
| 归档时间: |
|
| 查看次数: |
14464 次 |
| 最近记录: |