当我的打印时间少于1分钟而不是毫米的地方时,它会自动占用30而小时的​​地方则为5。我希望它显示00

时间:2018-05-19 23:24:02

标签: android

这是我的代码:

SimpleDateFormat dateFormat=new SimpleDateFormat("mm:ss");
int currentPosition=mediaPlayer.getCurrentPosition();
int duration=mediaPlayer.getDuration();

leftTime.setText(dateFormat.format(new Date(currentPosition)));
rightTime.setText(dateFormat.format(new Date(duration-currentPosition)));
}

输出显示持续时间长达60秒5:30:20 任何人吗?

1 个答案:

答案 0 :(得分:0)

您正在以毫秒为单位处理持续时间作为日期,这是不正确的。

作为替代方案,您可以使用以下函数,该函数接收时间为Long,返回格式为" MM:SS"的字符串:

public String toTimestamp(Long time) {
    Long minutes = time / 60000;
    Float seconds = time % 3600000 % 60000 / 1000.0f;
    DecimalFormatSymbols localeSpecificChars = DecimalFormatSymbols(Locale.US);
    String secondsString = DecimalFormat("00", localeSpecificChars).format(Math.floor(seconds));
    return String.format(Locale.US, "%02d:%s", minutes, secondsString);
}