Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java display current time

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?

like image 882
user1809035 Avatar asked Dec 10 '12 23:12

user1809035


2 Answers

    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)

like image 162
Anupam 1 Avatar answered Nov 16 '22 00:11

Anupam 1


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.


Edit

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();
}
like image 42
Natix Avatar answered Nov 16 '22 00:11

Natix