如何比较新的持续时间和存储的持续时间,并用两者中较短的一个替换?

时间:2017-03-02 16:51:52

标签: java android time

我想记录完成游戏等级所需的最短时间。

我想将它存储在SharedPreferences中。现在,我能够存储和检索每个级别的时间并在ListView中设置它,但我将它以“00:00”之类的字符串格式存储。

我正在使用两个int(s)(Minutes,Seconds),当水平完成时,它每秒增加1,我将其存储为

String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds);

然后我将它存储在SharedPreferences中。但是我无法比较最近完成一个级别的时间是否比之前最短的时间短。

如果用户在特定级别上花费的时间比以前少,我只想更换时间。

1 个答案:

答案 0 :(得分:1)

只需存储时间戳。您可以使用System.currentTimeMillis()来获取级别启动时的时间,并在完成时再次调用它,获取差异并将其存储为long而不是字符串。然后,您可以使用

将这些毫秒转换为秒和分钟
String.format("%02d %02d", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

像这样的东西

long startTime = System.currentTimeMillis();
        try {
            Thread.sleep(3000);
            long endTime = System.currentTimeMillis();

            long differenceTime = endTime - startTime;
            Log.d("TEST", String.format("%02d %02d",
                    TimeUnit.MILLISECONDS.toMinutes(differenceTime),
                    TimeUnit.MILLISECONDS.toSeconds(differenceTime) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(differenceTime))
            ));
        } catch (Exception e) {

        }