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

时间:2018-01-17 21:17:32

标签: java mpxj

例如,我想计算2个活动之间的持续时间差异。活动1持续13天。活动2的持续时间为5天。我知道Microsoft Project在使用Durations时遇到了困难。提前谢谢!

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

1 个答案:

答案 0 :(得分:0)

如果您的持续时间都具有相同的时间单位,则可以执行简单的减法:

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方法的其他变体允许您自己传递这些值。