给定JavaFX Ensemble中的formatTime方法返回错误的时间格式

时间:2016-09-27 13:50:59

标签: java javafx-8 media-player

我正在尝试构建媒体播放器并从JavaFX Sample Ensemble.获取帮助。如果媒体不到一小时,则会有一个名为private String formatTime(Duration elapsed, Duration duration)的方法返回正确的持续时间。介质大于60分钟时会出现此问题。小时和分钟计算是可以的,其中第二个不是。

例如,我有一部持续时间为02:06:42的电影。当我打开此媒体时,它会显示持续时间02:06:-7158

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

durationSeconds部分行外,该方法的计算是可以的。

int intDuration = (int) Math.floor(duration.toSeconds());
int durationHours = intDuration / (60 * 60);
if (durationHours > 0)
{
    intDuration -= durationHours * 60 * 60;
}
int durationMinutes = intDuration / 60;
int durationSeconds = intDuration - durationHours * 60 * 60 - durationMinutes * 60;

此处,在计算durationHours时,if块上也会扣除intDuration。但是在最后一行,计算第二行时,我们会再次从durationHours中扣除intDuration,我们已经在if块中扣除了int durationSeconds = intDuration - durationMinutes * 60; 。这就是为什么当持续时间超过一小时时,我们得到一个很大的负值。

以下是解决方案 -

- durationHours * 60 * 60

用这条线替换最后一行将解决问题。在这里,我们必须删除已在if块中计算的小时缩减部分ActiveMQConnectionFactory