有没有一种方便的方法可以使用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的第一个问题,那我该怎么办?
答案 0 :(得分:1)
如果我理解了您的问题,那么您可以将负值作为第二个参数传递给Calendar.add(int field, int value)
,如
int amount = -10;
cal.add(Calendar.MILLISECOND, amount);
从Calendar cal
减去10毫秒。