I need to compare two Date
s (eg date1
and date2
) and come up with a boolean sameDay
which is true of the two Date
s 在同一天共享,如果不是,则为 false。
我怎样才能做到这一点?这里似乎有一股混乱的旋风……如果可能的话,我想避免引入 JDK 之外的其他依赖项。
澄清一下: 如果 date1
和 date2
具有相同的年月日,则 sameDay
为真,否则为假我意识到这需要时区知识……传递时区会很好,但只要我知道行为是什么,我就可以接受格林威治标准时间或当地时间。
再次澄清:
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
原文由 Jason S 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,当可能涉及不同时区时,“同一天”并不像听起来那么简单。上面的代码将为这两个日期计算相对于运行它的计算机使用的时区的日期。如果这不是您所需要的,则在确定“同一天”的确切含义后,您必须将相关时区传递给
Calendar.getInstance()
调用。是的,Joda Time 的
LocalDate
将使整个事情变得更加清晰和容易(尽管会出现涉及时区的相同困难)。