如何以分钟:秒格式显示时间,其中包括小时?

时间:2018-10-05 13:22:20

标签: android datetime time chronometer

我想显示从某点开始经过的时间。我为此使用了Chronometer类。

但是,问题是,一小时后,它会显示“ 1:00:00”,但是我希望它显示60:00,依此类推(例如80分钟后,它应该是80:00,然后不是1:20:00)

我尝试将SimpleDateFormat类用于“ mm:ss”格式。当然,它不会显示小时,但是一个小时后,它将显示为00:00,依此类推。

是否有解决方案,例如我可以使用的Java自定义格式化程序?

2 个答案:

答案 0 :(得分:2)

String displayedTime = your time in format of HH:mm
String[] splittedTime = displayedTime.split(":");
String desiredTimeFormat = String.valueOf(Integer.valueOf(splittedTime[0])*60) + ":" + splittedTime[1];

答案 1 :(得分:0)

所以这是我在结合@ parliament's答案后想到的解决方案:

// This is my base time for the chronometer
baseTime = SystemClock.elapsedRealtime() - (new Date().getTime() - myInitialTimeInMillis);
Date baseDate = new Date(baseTime);
chronometer.setOnChronometerTickListener(chronometer1 -> {
        baseTime += 1000;
        baseDate.setTime(baseTime);
        chronometer.setText(getTimeInMinuteSecondFormat(baseDate));
});
chronometer.start();

这是我获取格式化时间的常用util方法:

public static String getTimeInMinuteSecondFormat(Date date) {
    String displayTime = getHourMinuteSecondFormatDate(date);
    String[] splitDisplayTime = displayTime.split(":");
    if (Integer.valueOf(splitDisplayTime[0]) <= 0) {
        return splitDisplayTime[1] + ":" + splitDisplayTime[2];
    } else {
        return (Integer.valueOf(splitDisplayTime[0]) * 60) + Integer.valueOf(splitDisplayTime[1]) + ":" + splitDisplayTime[2];
    }
}

像魅力一样工作!谢谢@ parliament