比较两个java.util.Dates以查看它们是否在同一天

问题:

我需要比较两个Date(例如date1date2),并得出一个boolean sameDay,这是同一天的两个Date共享的真实,如果不是,则需要false。
我该怎么做?似乎这里有一个混乱的旋风,我想避免在JDK之外引用其他依赖关系,如果可能的话。
 澄清:如果date1date2分享相同的年,月和日,则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.YEAR) == cal2.get(Calendar.YEAR) &&
                  cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);

请注意,“同一天”不是一个简单的概念,因为听起来不同的时区可能涉及到。上述代码将为两个日期计算相对于运行计算机使用的时区的日期。如果这不是您需要的,您必须在相关时段通过Calendar.getInstance()电话,您已经确定了与“同一天”之间的意思。
是的,Joda Time的LocalDate将使整个事情变得更加清洁和简单(尽管涉及到时区的困难也会相同)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Comparing two java.util.Dates to see if they are in the same day

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 66 = 69