java从用户处获取输入小时分秒,并以hh:mm:ss格式开始倒计时
我面临的问题是启动计时器以及如何将数据放入日期
这是我的代码:
Calendar cl = Calendar.getInstance();
cl.set(Calendar.HOUR, 0);
cl.set(Calendar.MINUTE, 0);
cl.set(Calendar.SECOND, 0);
cl.add(Calendar.HOUR, hr);
cl.add(Calendar.MINUTE, min);
cl.add(Calendar.SECOND, sec);
Date date = cl.getTime();
Timer t =new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
jLabel2.setText(timeFormat.format(date));
}
});
t.start();
使用Calendar
将数据放入日期和启动计时器是否正确
# 1 楼答案
我认为你不应该用
Calendar
来做这个。ACalendar
表示日历时间中的一个点,而不是以小时、分钟和秒为单位的持续时间。而且,Calendar
现在已经是老东西了,取而代之的是Java 8中新的、更为程序员友好的类(参见java.time
包)我从评论中了解到你想要倒计时。我建议:
我使用的是
Duration
类,它是Java8中引入的类之一。它设计的持续时间以小时、分钟和秒为单位,所以这是我们工作所需要的。不过,它不适合格式化。你可以使用它的toString
方法,它会给你一个类似PT9M52S
的字符串,持续9分52秒,这可能不是大多数用户认为最直观的。相反,我使用以下辅助方法进行格式化: