我正在尝试构建媒体播放器并从JavaFX Sample Ensemble.获取帮助。如果媒体不到一小时,则会有一个名为private String formatTime(Duration elapsed, Duration duration)
的方法返回正确的持续时间。介质大于60分钟时会出现此问题。小时和分钟计算是可以的,其中第二个不是。
例如,我有一部持续时间为02:06:42
的电影。当我打开此媒体时,它会显示持续时间02:06:-7158
。
问题出在哪里?
答案 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
。