如何计算 Java 中两个持续时间之间的数值差异(使用 mpxj 库)?

How Can I Calculate a Numerical Difference between 2 Durations in Java (Using mpxj Library)?

例如,我想计算 2 个活动之间的持续时间差异。 Activity 1 有 13 天的持续时间。 Activity 2 有 5 天的持续时间。我知道 Microsoft Project 在使用持续时间进行操作时遇到困难。提前致谢!

需要答案:13-5 = 8 理想答案:8天

如果你的 Durations 都有相同的时间单位,你可以进行简单的减法:

Duration d1 = Duration.getInstance(13, TimeUnit.DAYS);
Duration d2 = Duration.getInstance(5, TimeUnit.DAYS);
Duration result = Duration.getInstance(d1.getDuration() - d2.getDuration(), TimeUnit.DAYS);

如果你有不同的时间单位,你需要先进行转换:

Duration d1 = Duration.getInstance(13, TimeUnit.DAYS);
Duration d2 = Duration.getInstance(40, TimeUnit.HOURS);
Duration d3 = d2.convertUnits(TimeUnit.DAYS, project.getProjectProperties());
Duration result = Duration.getInstance(d1.getDuration() - d3.getDuration(), TimeUnit.DAYS);

在上面的示例中,第二个持续时间以小时为单位(假设每个工作日 8 小时),我们在计算差异之前将其转换为天数。请注意,我们将项目属性传递给 convertUnits 方法。这提供了一个工作日有多少小时等详细信息,以便进行准确的转换。 convertUnits 方法还有其他变体,允许您自己传递这些值。