当前位置: 首页 > 知识库问答 >
问题:

如何只减去两个java.util.date对象的日期部分?

上官华池
2023-03-14
   Date dateOne= new Date(121,2,19,23,26,30);
   Date dateTwo= new Date(121,2,20,01,26,30);
   long diff = dateTwo.getTime()-dateOne.getTime();
   TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)  // We need 1, result is 0

我明白,为什么我们得到0(毫秒数的差异不构成24小时),但我不明白需要做什么才能得到1。有什么建议吗.提前道谢。

共有1个答案

王兴庆
2023-03-14

可以将Date转换为LocalDateTime。

Date feedDate= new Date(121,2,19,23,26,30);
Date tarcDate= new Date(121,2,20,01,26,30);
LocalDateTime feed = LocalDateTime.ofInstant(feedDate.toInstant(), ZoneId.systemDefault());
LocalDateTime tarc = LocalDateTime.ofInstant(tarcDate.toInstant(), ZoneId.systemDefault());

现在获取两者之间的持续时间。

 Duration d = Duration.between(feed, tarc);
 System.out.println(d);

印刷品

PT2H

并检查它们是否是同一日期。基于比较器的正常返回值。

 System.out.println(feed.toLocalDate().compareTo(tarc.toLocalDate()));

印刷品

-1

Date的一些方法和构造函数不推荐使用,因此最好在java.time包中使用类。

 类似资料:
  • 问题内容: 我对angularjs相当陌生,但现在就开始了。我可以通过angularjs窗体中的两个日期,但是我需要做的是以某种方式减去两个日期以得到两者之间的天数差异。我创建了一个jQuery函数来执行此操作,但是我不知道如何将两个日期传递给该函数。所以我想知道是否还有其他方法可以解决此问题? 我正在尝试根据两个日期之间要设置样式的某些天之间的天数来设置触发器系统。例如,如果要在10天内使用 样

  • 问题内容: 我想在表中选择所有记录,这些记录的输入日期早于2个月。 知道我该怎么做吗? 我还没有尝试过任何东西,但是我在这一点上: 问题答案: 如果您使用的是SQL Server,请尝试以下操作: 根据您的更新,它将是:

  • 问题内容: 我正在从一个字符串中解析两个日期,如下所示: 我需要做的是找出这两个日期之间的区别,例如: = 8天2小时36分钟21秒 ^这是我需要的两个日期/时间 我相信我需要解析格式并将其转换为另一种格式,然后减去两者之间的差并进行数学运算以得出之间的天/小时/分钟/秒 问题答案: 与其他回答者试图暗示的相反,在标准Java SE中,计算两个日期之间的差异并不是那么简单。 您的第一步确实是将这些

  • 问题内容: 我的心脏必须深入到减去两个日期以计算出天数后,内部开始流血: .NET或你命名的任何现代语言中只有两行代码。 这对Java不好吗?还是我应该知道一个隐藏的方法? 可以在util中使用Date类而不使用GregorianCalendar吗?如果是这样,我是否应该提防像1970年这样的细微事情? 谢谢 问题答案: 这确实是标准Java API中最大的史诗失败之一。有一点耐心,那么你将获得J

  • 我想知道在FreeMarker中从今天的日期减去日期的最好方法是什么? 我有一个用户的注册日期在这种格式:2015-06-15 05:12:35.890,我要做的是得到他们注册到现在之间的年数。(全年,不需要1年6个月/1.5年为例) 谁能告诉我做这件事的最好方法吗?

  • 如何减去上述格式的两个javascript日期,并知道它们之间的天数,然后以dd/月/年格式返回结果。另外,我想添加180days到date1,并以dd/月/年格式输出结果?谢谢你的帮助。