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

Given formatTime method in JavaFX Ensemble Returning Wrong Time Format

我正在尝试构建一个媒体播放器并从 JavaFX Sample Ensemble. 那里寻求帮助有一个名为 private String formatTime(Duration elapsed, Duration duration) 的方法,如果媒体少于一个小时,该方法 returns 可以纠正持续时间。当媒体超过 60 分钟时会出现此问题。小时和分钟计算是可以的,秒不是。

例如,我有一部电影的时长是 02:06:42。当我打开这个媒体时,它显示持续时间 02:06:-7158.

问题出在哪里?

除了 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。但是在最后一行,计算秒的地方,我们再次从 intDuration 中减去 durationHours,我们已经在 if 块中减去了它。这就是为什么当持续时间大于一个小时时,我们会得到一个很大的秒数负值。

解决办法-

int durationSeconds = intDuration - durationMinutes * 60;

只需用这一行替换最后一行即可解决问题。这里我们必须删除已经在 if 块中计算的小时减少部分 - durationHours * 60 * 60