Java 如何将新的持续时间与存储的持续时间进行比较,并替换为两者中较短的持续时间?
我想记录完成一个游戏关卡所用的最短时间 我想将其存储在SharedReferences中。现在,我能够存储和检索每个级别的时间,并在ListView中进行设置,但我将其存储为字符串格式,如“00:00” 我使用了两个整数(分,秒),每一秒增加1,最后当等级完成时,我像这样存储它Java 如何将新的持续时间与存储的持续时间进行比较,并替换为两者中较短的持续时间?,java,android,time,Java,Android,Time,我想记录完成一个游戏关卡所用的最短时间 我想将其存储在SharedReferences中。现在,我能够存储和检索每个级别的时间,并在ListView中进行设置,但我将其存储为字符串格式,如“00:00” 我使用了两个整数(分,秒),每一秒增加1,最后当等级完成时,我像这样存储它 String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds); 然后我将其存储在SharedReferences
String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds);
然后我将其存储在SharedReferences中。但我无法比较最近完成一个等级所用的时间是否比之前最短的时间短
我只想在用户为特定级别花费的时间比以前少的情况下替换时间。只需存储一个时间戳即可。您可以使用
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) {
}
一切都已完成,但当我尝试将毫秒转换为分钟时,它返回24807913,我尝试了TimeUnit.millides.toMinutes(毫秒);它仍然以这种方式返回Tme,我尝试了int mins=(millis/1000)/60;它仍然返回相同的结果…我已经用一个如何使用它的示例编辑了我的答案。