java - 如何在 Android TimeUnit 中获取经过的时间
问题描述
我有一个 5 分钟计时器。如果我完成 30 秒,则显示为 4:30,但我想设置 30 秒。
减少时间的代码
String timeReminder= String.format(Locale.ENGLISH , "%02d:%02d" , TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) , TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) );
timerText.setText(timeReminder);
我只想要提醒时间。
解决方案
java.time
您可以使用java.time.Duration
它以ISO-8601 标准为模型,并作为JSR-310 实现的一部分与Java-8一起引入。Java-9引入了一些更方便的方法。
import java.time.Duration;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Duration total = Duration.ofMinutes(5);
Duration elapsed = Duration.ofSeconds(30);
Duration remaining = total.minus(elapsed);
// ###############Java 8###########################
String timeReminder = String.format(Locale.ENGLISH, "%02d:%02d", remaining.toMinutes(),
remaining.toSeconds() % 60);
System.out.println(timeReminder);
// ################################################
// ###############Java 9###########################
timeReminder = String.format(Locale.ENGLISH, "%02d:%02d", remaining.toMinutesPart(), remaining.toSecondsPart());
System.out.println(timeReminder);
// ################################################
}
}
输出:
04:30
04:30
从Trail: Date Time了解有关现代日期时间 API 的更多信息。
- 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。
- 如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring和How to use ThreeTenABP in Android Project检查Java 8+ APIs available。
推荐阅读
- python - 如何在 VScode 和 PyCharm 等 PyGtk 应用程序中实现 Linux 终端?
- f5 - 通过 https url 的 F5 负载均衡器
- linux - 是否可以直接将 photorec 文件输出到 ssh 帐户
- mongodb - MongoDB:使用来自另一个字段的值更新字段
- javascript - 使用 angularjs 使用属性检查取消选中复选框
- elasticsearch - 如何更改 Elastic Search 上搜索结果的顺序?
- php - 如何在 Laravel 中使用多对多关系检索嵌套类别的产品并对结果进行排序?
- python - 得到一个错误“预期的二维数组,得到一维数组”,拆分数据集(csv)以使线性
- java - 使用具有多种功能的扫描仪的正确方法?
- android - Gradle Build 上的 Axion 发布插件错误