发布日期:2018-03-26
JAVA中如何比较两个没有时间的日期?+ 查看更多
JAVA中如何比较两个没有时间的日期?
+ 查看更多
发布日期:2018-03-08 16:28
分类:JAVA
浏览次数:86
我想要有一个compareTo方法来忽略java.util.Data的时间部分。我想有很多方法来解决这个问题。最简单的方法是什么?
回答
我比较偏爱用Joda Time ,这会使问题难以置信的容易:
DateTime first = ...; DateTime second = ...; LocalDate firstDate = first.toLocalDate(); LocalDate secondDate = second.toLocalDate(); return firstDate.compareTo(secondDate);注意:如注释,如果你使用DateTimeComparator.getDateOnlyInstance() 它甚至更简单:)
// TODO: consider extracting the comparator to a field. return DateTimeComparator.getDateOnlyInstance().compare(first, second);
"使用Joda Time"是几乎所有涉及java.util.Date或java.util.Calendar的SO问题的基础。这是一个完全优秀的API。如果你做任何带有日期/时间的重要事情,如果可以的话你真的应该使用它。
如果你被强制要求使用内置API,你应该使用适当的日期和适当的时区创建一个日历实例。然后,你可以将每个日历中的每个字段的小时、分钟、秒和毫秒设置为0,并且比较生成的时间。绝对差和Joda解全面比较:) 时区部分很重要:java.util.Date始终基于UTC。在大多数情况下,我对某个特定时区的日期感兴趣。这本身会迫使你使用日历或Joda Time (除非你想要自己考虑时区,否则我不推荐。)