如何使用日历减去不同的时间单位

时间:2014-11-22 23:37:15

标签: java time timer calendar subtraction

有没有一种方便的方法可以使用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的第一个问题,那我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

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

Calendar cal减去10毫秒。