我想要一个忽略 java.util.Date 的时间部分的 compareTo 方法。我想有很多方法可以解决这个问题。最简单的方法是什么?
原文由 Arne Evertsson 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想要一个忽略 java.util.Date 的时间部分的 compareTo 方法。我想有很多方法可以解决这个问题。最简单的方法是什么?
原文由 Arne Evertsson 发布,翻译遵循 CC BY-SA 4.0 许可协议
Apache commons-lang 几乎无处不在。那么这个呢?
if (DateUtils.isSameDay(date1, date2)) {
// it's same
} else if (date1.before(date2)) {
// it's before
} else {
// it's after
}
原文由 André 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.1k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
更新:虽然 Joda Time 在当时是一个很好的推荐,但尽可能使用 Java 8+ 中的
java.time
库。我的偏好是使用 Joda Time ,这使得这非常容易:
编辑:如评论中所述,如果您使用
DateTimeComparator.getDateOnlyInstance()
它更简单:)(“使用 Joda Time”是几乎所有关于
java.util.Date
或java.util.Calendar
的 SO 问题的基础。它是一个非常出色的 API。如果您正在对日期/时间做 任何 重要的事情,如果可能的话,你应该真正使用它。)如果您绝对 被迫 使用内置 API,您应该使用适当的日期和适当的时区创建
Calendar
的实例。然后,您可以将小时、分钟、秒和毫秒中的每个日历中的每个字段设置为 0,并比较结果时间。与 Joda 解决方案相比,这绝对是 icky :)时区部分很重要:
java.util.Date
始终 基于 UTC。在我对日期感兴趣的大多数情况下,那 是特定时区 的日期。这本身将迫使您使用Calendar
或 Joda Time(除非您想自己考虑时区,我不建议这样做。)安卓开发者快速参考
示例代码(示例)