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

标签 java datetime

我需要比较两个Date(例如date1date2)并得出一个 boolean 值sameDay 如果两个 Date 共享同一天,则为 true,否则为 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.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/

相关文章:

java - 主线程可以在子线程之前死掉吗

java - 尝试创建文件但没有成功 - 文件出现在其他地方?

java - 如何在运行时查找一个对象是否引用另一个对象

sql-server - 存储时间的最佳方式(hh :mm) in a database

java - 在运行时从数组列表中添加和删除用户并保留项目详细信息

php - PHP strtotime() 的性能如何?

python - 如何以常规范式打印日期?

python - 在 Python 中,为什么 isinstance 函数说 datetime 是 datetime.date 的一个实例?

datetime - 类 ClockTriggerBuilder : Specific Date and Time (only once) Trigger in Google Sheet Script keeps repeatedly executing every minute

java - 在 Struts 2 中初始化 Action 类字段的正确方法是什么?