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

Java 如何使用日历减去不同的时间单位,java,time,timer,calendar,subtraction,Java,Time,Timer,Calendar,Subtraction,使用Calendar类是否有一种方便的方法来减去不同的时间单位? 我正在制作一个计时器,它可以倒计时数小时,并以小时、分钟和秒的形式将时间打印到控制台上。我不想在这个程序中使用任何库,比如Joda Time。我还想使用Calendar类,而不是Date类,除非太难了 这是我的当前代码,它只打印剩余时间(秒): import java.awt.*; import java.util.*; public class ClickWhen { public static void main(S

使用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);
        }
    }
}
import java.awt.*;
导入java.util.*;
公共类ClickWhen{
公共静态void main(字符串[]args)引发AWTException{
int minGoal=30;
整数小时=6+12;
日历时间=Calendar.getInstance();
int minute=time.get(Calendar.minute);
int hour=time.get(日历.hour/天);
int second=time.get(Calendar.second);
内部维护=(分钟*60+小时*3600)-(秒+分钟*60+小时*3600);
布尔值为真;
机器人r=新机器人();
当(去的时候){
r、 延迟(1000);
time=Calendar.getInstance();
分钟=时间.get(Calendar.minute);
小时=时间.get(日历.hour\u/天);
秒=time.get(Calendar.second);
如果(小时>=小时和分钟>=分钟){
//做点什么
isGoing=假;
}
如果(小时>=12){
系统输出打印项次(小时-12+“:“+分钟+”:“+秒+”下午“);
}
如果(小时<12){
系统输出打印项次(小时+“:“+分钟+”:“+秒+”上午“);
}
保留--;
System.out.println(“剩余秒数:+sRemaining”);
}
}
}

这是我关于堆栈溢出的第一个问题,我是怎么做的?

如果我理解您的问题,那么您可以将负值作为第二个参数传递给like


日历校准中减去10毫秒

谢谢!这应该行得通。我想我可以澄清我想要什么。我想要的是一种方法,如果我减去一秒,使它小于一秒,它将被设置为59,减去一分钟,这样它将像一个真正的时钟一样工作。我想要的是一个能做到这一点的方法。@captain尝试上面的代码(它已经做到了)。嗯,一分钟是六十秒,但它确实像时钟一样工作。
int amount = -10;
cal.add(Calendar.MILLISECOND, amount);