【发布时间】:2015-11-09 22:49:56
【问题描述】:
我有一个独特的情况。我正在处理一个旧 WebLogic 服务器上的遗留项目,该服务器 (A) 不允许任何超过 Java 6 的内容,并且 (B) 使用旧版本的 JodaTime(准确地说是 1.2 版)污染类加载器。
我正在为之工作的客户有一个标准开发平台,其中包括 Java 8,以及适用于卡在早期 Java 版本中的项目的 JodaTime。因此,我坚持使用这个旧版本的 JodaTime(310-Backport 将是一个很好的解决方案,但我不允许使用它)。
我需要创建一个实用方法来检查 DateTime 是否在今天之后(无论时间如何)。 JodaTime 1.2 没有LocalDate,也没有像now() 这样方便的静态工厂方法,所以我想出了这个:
public static boolean isAfterToday(DateTime dateTime) {
YearMonthDay date = new YearMonthDay(dateTime);
YearMonthDay today = new YearMonthDay();
return date.isAfter(today);
}
感觉有点恶心,因为在更新的 JodaTime 版本中,YearMonthDay 类中的所有内容都已被弃用并替换为LocalDate,遗憾的是我无法使用。有没有更好的方法可以做到这一点?另外,我正试图通过将DateTime 转换为YearMonthDay 来减少时间...是否有任何我遗漏或应该注意的“陷阱”?
另外几点说明:我假设我已经对 dateTime 参数进行了空值检查,并且时区应该不是问题,因为应用程序中的所有时区都是 GMT。另外,我我允许使用 Apache Commons 和 Guava 库。
【问题讨论】: