首页 > 解决方案 > 如何在 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);

我只想要提醒时间。

标签: javaandroidtimeunit

解决方案


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 的更多信息。


推荐阅读