当前位置: 首页 > 面试题库 >

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

酆高翰
2023-03-14
问题内容

我需要比较两个Dates(例如date1date2),并得出在同一天boolean sameDay两个Dates相同的true,如果不是,则返回false。

我怎样才能做到这一点?这里似乎有混乱的旋风……而且我想尽可能避免引入除JDK之外的其他依赖项。

需要说明的是:如果date1并且date2共享相同的年,月和日,sameDay则为true,否则为false。我意识到这需要了解时区…传入时区会很好,但是只要我知道行为是什么,我就可以使用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可以使整个过程变得更加整洁和轻松(尽管也会存在涉及时区的同样困难)。



 类似资料:
  • 在Javascript中工作,我试图查看5个不同的变量是否在给定的时间都包含相同的值。值可以是6个事物中的1个,但我需要看看它们是否都是相同的,无论它是哪个值。我试过这个: 还有这个: 这两个都有效吗?如果是这样的话,我的代码可能在其他地方出现了错误...如果不是,我真的很感谢一些帮助。我在一个名为dieArray的数组中也有这些变量,如下所示: 学习一种通过数组实现这一点的方法是很酷的,但如果这

  • 知道两个二进制文件是否相同(除了时间戳)的最简单方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要实际提取差异。我只需要知道他们是不是一样的。

  • 问题内容: 我想知道如何比较两个不同的数据库 表记录 。我的意思是,我将比较两个数据库表,它们可能具有不同的列名但具有相同的数据。但是其中一个表可能比另一个表具有更多的记录,因此我想看看这两个表之间的区别是什么。为此,如何编写sql查询?仅供参考:这两个数据库都在同一个SQL Server实例下。 然后,在比较表1和表2之后,它应该 从 表2返回 Ruby Core。 问题答案: 如果执行从T1到

  • 我们有两个大小的向量,这取决于运行时,需要检查它们是否相等-只有在较小大小的向量结束后才有不同的元素。我使用了std::equal,但问题是我需要首先找到哪个向量的大小较小,从而导致额外的代码行: 比较两个向量或仅在较小向量结束时不同的代码可以改进吗?

  • 问题内容: JDK中是否有一种方法比较两个对象的相等性(是否为空)?像这样: 自己编写此方法似乎很愚蠢,因为我认为它必须已经存在于某个地方。 问题答案: Java 7.0添加了一个新的便捷类:。 它有一个专门用于此的方法: