java - 在 Java 中对两个日期求和

标签 java date calendar

如何在 Java 中添加两个日期?

示例:“2010-01-14 19:16:17”“0000-10-03 01:10:05”的总和
将导致“2010-11-17 20:26:22”。

我知道如何使用日历和逐字段添加。

有没有其他方法可以一次将它们(年/月/日/小时/分钟/秒)相加?

最佳答案

如果您使用的是 Date 对象,您可以这样做:

Date d1 = ...
Date d2 = ...

long sum = d1.getTime() + d2.getTime();

Date sumDate = new Date(sum);

该代码使用 .getTime() 方法返回自纪元以来的毫秒数。 不用说 Date 类有很多问题,应该尽可能避免。

是否要对其他类型求和?

更新:对于 Calendar,我将执行以下操作(基于 javadocs):

Calendar c1 = ...
Calendar c2 = ...
long sum = c1.getTimeInMillis() + c2.getTimeInMillis();
Calendar sumCalendar = (Calendar)c1.clone();
sumCalendar.setTimeInMillis(sum);

更新:正如史蒂夫所说,如果您在此处提供的日期假定第二个日期是相对于 Java 纪元的,则此方法有效。如果您确实想从“0”年开始,那么您需要考虑到这一点(通过减去您的纪元时间)。

关于java - 在 Java 中对两个日期求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067657/

相关文章:

oracle - 在oracle中查询日期时间

python - 用Python解析模糊时间戳

javascript - 仅显示月份和年份的 Django DateField 日历?

java - 我怎样才能从给定的瞬间得到两个午夜?

java - 我想上传图像并将其渲染为第二页,并显示缩略图并创建用户和图像的文件夹结构

java - 如何使用 reSTLet 在 GET 调用中发送参数?

mongodb - 如何在 MongoDB 中返回具有最近日期的元素

Java 11+ "generic array creation"错误(使用 BlueJ)

java - 在场景已加载/显示后,如何将复选框添加到 GridPane?

java - 如何使线程返回java中对象的arraylist?