我试图得到剩余的时间,直到第二天的某个小时

2jcobegt  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(296)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

27天前关门了。
改进这个问题
所以我有3个小时,分,秒的变量,我想倒计时。
我怎样才能使它计数到这个时间,我有,它将输出3个变量,其中包含剩余的小时分和秒。有人能帮我吗?

kxeu7u2r

kxeu7u2r1#

java.time文件

我强烈建议您在时间工作中使用java.time,即现代的java日期和时间api。这应该让你开始:

int hour = 14;
    int minute = 23;
    int second = 45;

    ZoneId zone = ZoneId.systemDefault();
    ZonedDateTime endTime = LocalDate.now(zone)
            .plusDays(1)
            .atTime(LocalTime.of(hour, minute, second))
            .atZone(zone);
    ZonedDateTime now = ZonedDateTime.now(zone);
    Duration remainingTime = Duration.between(now, endTime);

    long hoursRemaining = remainingTime.toHours();
    int minutesRemaining = remainingTime.toMinutesPart();
    int secondsRemaining = remainingTime.toSecondsPart();

    System.out.format("Remaining: %d hours %d minutes %d seconds%n",
            hoursRemaining, minutesRemaining, secondsRemaining);

刚才我在时区运行这个代码段时,输出是:
剩余时间:15小时55分27秒

链接

oracle教程:date time解释如何使用java.time。

js4nwp54

js4nwp542#

你可以用 java.time.LocalTime 创建开始时间和结束时间,并以指定的间隔循环它们之间的所有时间,例如 start 直到 end 每隔一秒钟。

import java.time.LocalTime;

class Main {
    public static void main(String[] args) throws InterruptedException {
        LocalTime start = LocalTime.of(10, 20, 15);
        LocalTime end = LocalTime.of(10, 15, 20);

        // Count down every second from start until end
        for (LocalTime time = start; time.isAfter(end); time = time.minusSeconds(1)) {
            System.out.println(String.format("%02d:%02d:%02d", time.getHour(), time.getMinute(), time.getSecond()));
            Thread.sleep(1000);
        }
    }
}

输出:

10:20:15
10:20:14
10:20:13
...
...
...

在trail:date-time了解有关现代日期时间api的更多信息。

相关问题