我需要比较两个Date
(例如date1
和date2
)并得出一个 boolean 值sameDay
如果两个 Date
共享同一天,则为 true,否则为 false。
我该怎么做?这里似乎有一阵困惑……如果可能的话,我希望避免引入 JDK 之外的其他依赖项。
澄清:如果date1
和date2
共享相同的年、月、日,则sameDay
为真,否则为假。我意识到这需要了解时区...传递时区会很好,但只要我知道行为是什么,我就可以使用 GMT 或本地时间。
再次澄清:
date1 = 2008 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
=> sameDate = true
date1 = 2009 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
=> sameDate = false
date1 = 2008 Aug 03 12:00:00
date2 = 2008 Jun 03 12:00:00
=> sameDate = false
最佳答案
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
boolean sameDay = cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR) &&
cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);
请注意,“同一天”并不像听起来那么简单,因为可能涉及不同的时区。上面的代码将为这两个日期计算相对于其运行的计算机所使用的时区的日期。如果这不是您所需要的,则在确定“同一天”的确切含义后,您必须将相关时区传递给 Calendar.getInstance()
调用。
是的,Joda Time 的 LocalDate
将使整个事情变得更加清晰和容易(尽管涉及时区的同样的困难也会存在)。
关于java - 比较两个 java.util.Date 以查看它们是否在同一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61269267/