I have a code which shows me the current date and time when I run my application
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
Now it shows me: 2012/12/11 00:36:53 when I run it.
But I want it to count the time during running it.
So by example now when I run it on 00:37:53 it shows this time, but I want 00:37:53 at starting and I stop running it on 00:40:55 . I want that it shows me 00:37:53, 00:37:54, 00:37:55 and so on.
Now how can I do this?
public void ShowTime() {
new Timer(0, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Date d = new Date();
SimpleDateFormat s = new SimpleDateFormat("dd/MM/yyy hh:mm:ss a");
time.setText(s.format(d)); //time= jlabel
}
}).start();
}
Continuously Change time(refresh every second)
How about using a timer, such as javax.swing.Timer
? (Do not make mistake in the import, there are more Timer classes.)
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();
}
This will simply execute the body of the ActionListener every second, printing the current time.
The Thread.join
call on the last line is not universally necessary, it's just needed for this example piece of code to run until the process is manually stopped. Otherwise, it would immediately stop.
In a real application, in case it's a Swing app, then the timer should handle threading by itself, so you won't have to worry about it.
Integrating the above sample into your application is fairly simple, just add it into the initGUI
method and instead of printing the current time to System.out set change the text of the given label:
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();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With