【问题标题】:How do you subtract different units of time using Calendar [duplicate]你如何使用日历减去不同的时间单位[重复]
【发布时间】:2015-01-20 22:11:35
【问题描述】:

有没有一种方便的方法可以使用 Calendar 类减去不同的时间单位? 我正在制作一个倒计时多个小时的计时器,并以小时、分钟和秒为单位将时间打印到控制台。我不想在这个程序中使用任何库,例如 Joda Time。我也想用 Calendar 类,而不是 Date 类,除非太难了。

这是我当前的代码,它只以秒为单位打印剩余时间:

import java.awt.*;
import java.util.*;

public class ClickWhen {
    public static void main(String[] args) throws AWTException {
        int minGoal = 30;
        int hourGoal = 6+12;
        Calendar time = Calendar.getInstance();
        int minute = time.get(Calendar.MINUTE);
        int hour = time.get(Calendar.HOUR_OF_DAY);
        int second = time.get(Calendar.SECOND);
        int sRemaining = (minGoal*60+hourGoal*3600)-(second+minute*60+hour*3600);
        boolean isGoing = true;
        Robot r = new Robot();
        while(isGoing) {
            r.delay(1000);
            time = Calendar.getInstance();
            minute = time.get(Calendar.MINUTE);
            hour = time.get(Calendar.HOUR_OF_DAY);
            second = time.get(Calendar.SECOND);
            if(hour >= hourGoal && minute >= minGoal) {
                // do something
                isGoing = false;
            }
            if(hour >= 12) {
                System.out.println(hour-12+":"+minute+":"+second+" P.M.");
            }
            if(hour < 12) {
                System.out.println(hour+":"+minute+":"+second+" A.M.");
            }
            sRemaining--;
            System.out.println("Seconds Remaining: "+sRemaining);
        }
    }
}

这是我关于 Stack Overflow 的第一个问题,我是怎么做的?

【问题讨论】:

    标签: java time timer calendar subtraction


    【解决方案1】:

    如果我理解您的问题,那么您可以将负值作为第二个参数传递给 Calendar.add(int field, int value),就像

    int amount = -10;
    cal.add(Calendar.MILLISECOND, amount);
    

    Calendar cal 中减去 10 毫秒。

    【讨论】:

    • 谢谢!这应该有效。我可以澄清我想要什么。我想要的是一种方法,如果我减去一秒使其小于一,而是将其设置为 59 并减去一分钟,这样它就可以像真正的时钟一样工作。我想要的是一种可以做到这一点的方法。
    • @captain 试试上面的代码(它已经这样做了)。嗯,一分钟是六十秒,但它确实像时钟一样工作。
    猜你喜欢
    • 2016-08-31
    • 2020-08-23
    • 2019-09-08
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2019-05-04
    相关资源
    最近更新 更多