我有一个代码可以显示我运行应用程序时的当前日期和时间
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
现在它显示:2012/12/11 00:36:53 当我运行它时。
但我希望它在运行期间计算时间。
因此,现在举例来说,当我在 00:37:53 运行它时,它这次显示,但我希望 00:37:53 在开始时运行,而我在 00:40:55 停止运行。我希望它显示 00:37:53、00:37:54、00:37:55 等等。
现在我该怎么做呢?
最佳答案
使用计时器如何,例如 javax.swing.Timer
? (导入不要搞错,Timer类比较多。)
public static void main(String... args) throws InterruptedException {
final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
int interval = 1000; // 1000 ms
new Timer(interval, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar now = Calendar.getInstance();
System.out.println(dateFormat.format(now.getTime()));
}
}).start();
Thread.currentThread().join();
}
这将简单地每秒执行一次 ActionListener 的主体,打印当前时间。
最后一行的 Thread.join
调用并不是普遍必需的,只是为了让这段示例代码运行直到进程被手动停止。否则,它会立即停止。
在实际的应用程序中,如果是 Swing 应用程序,则计时器应该自己处理线程,因此您不必担心。
编辑
将上面的示例集成到您的应用程序中非常简单,只需将其添加到 initGUI
方法中,而不是将当前时间打印到 System.out set,更改给定标签的文本:
public void initGUI() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(800, 600));
setLayout(null);
Calendar now = Calendar.getInstance();
tijd = new JLabel(dateFormat.format(now.getTime()));
tijd.setBounds(100, 100, 125, 125);
window.add(tijd);
new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calendar now = Calendar.getInstance();
tijd.setText(dateFormat.format(now.getTime()));
}
}).start();
pack();
}
关于Java显示当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811224/