Solved

A program to calculate the elapsed time

Posted on 1998-07-27
8
354 Views
Last Modified: 2010-03-30
I hope that somebody can help me  write a program to calculate the elapsed time
between the start time and the end time (both values are entered by the user in
TextField txtstartTime and TextField txtendTime.)
For example:  elapsed time = 13:30:01(endTime) - 10:45:10(startTime);
0
Comment
Question by:CG
  • 4
  • 4
8 Comments
 

Author Comment

by:CG
ID: 1228433
Adjusted points to 60
0
 
LVL 6

Expert Comment

by:gadio
ID: 1228434
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yy HH:mm");    
     SimpleDateFormat resformat = new SimpleDateFormat("HH:mm");

     Date sd = formatter.parse(txtstartField.getText());
     Date ed = formatter.parse(txtendField.getText());
     Date diff = ed.getTime()-sd.getTime();
     System.out.println( resformat.format(diff) );

I hope that works since I havn't compiled it...  :-)
G.
0
 
LVL 6

Expert Comment

by:gadio
ID: 1228435
You have to change the format definition slightly if you want to use seconds as well. Look at the SimpleDateFormat api. If you have problems, ask.
0
 

Author Comment

by:CG
ID: 1228436
Hi, Gadio:
Thanks for your answer. According to your proposed answer, I wrote a program to
test it. But there was one compiler error: Identifier expected
            System.out.println (resformat.format(diff) );

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;

public class time extends Frame
{
        static public void main(String args[])
        {      
      (new time()).setVisible(true);
        }
        public time()
        {      
                super( "Elapsed Time" );
                //{{INIT_CONTROLS
                setLayout(null);
        setSize(200,120);
            
        lbstartTime = new Label("Start Time:");
        lbstartTime.setBounds(20,60,80,25);
        add(lbstartTime);            
                txtstartTime = new TextField();
        txtstartTime.setBounds(110,60,72,25);
        add(txtstartTime);            
                lbendTime = new Label("End Time:");
        lbendTime.setBounds(20,70,80,25);
        add(lbendTime);      
                txtendTime = new TextField();
        txtendTime.setBounds(110,80,72,25);
        add(txtendTime);            

                //{{REGISTER_LISTENERS
            this.addWindowListener(new WindowAdapter(){
                  public void windowClosing(WindowEvent e){
                    System.exit(0);}
                });
      }      
       
        Label lbstartTime, lbendTime;
        TextField txtstartTime, txtendTime;
         
        SimpleDateFormat resformat = new SimpleDateFormat("hh:mm:ss");

        Date sd = resformat.parse(txtstartTime.getText());
        Date ed = resformat.parse(txtendTime.getText());
        Date diff = ed.getTime()-sd.getTime();
        System.out.println( resformat.format(diff) );
     
       
 }
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 6

Expert Comment

by:gadio
ID: 1228437
I fixed it up:

import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class time extends Frame
{
  Label lbstartTime, lbendTime;
  TextField txtstartTime, txtendTime;
  Button calculate;
  SimpleDateFormat formatter;
  SimpleDateFormat resformat;

  static public void main(String args[])
  {
        time t = new time();
        t.show();;
  }
  public time()
  {
        super( "Elapsed Time" );
        //{{INIT_CONTROLS
        setLayout(new FlowLayout());
        //setSize(200,120);

        lbstartTime = new Label("Start Time:");
        lbstartTime.setBounds(20,60,80,25);
        add(lbstartTime);
        txtstartTime = new TextField(10);
        txtstartTime.setBounds(110,60,72,25);
        add(txtstartTime);
        lbendTime = new Label("End Time:");
        lbendTime.setBounds(20,70,80,25);
        add(lbendTime);
        txtendTime = new TextField(10);
        txtendTime.setBounds(110,80,72,25);
        add(txtendTime);
        calculate = new Button("Calculate!");
        add(calculate);
        pack();

        formatter = new SimpleDateFormat("HH:mm:ss");
        resformat = new SimpleDateFormat("HH:mm:ss");
        //{{REGISTER_LISTENERS
        this.addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){
                System.exit(0);}
        });
        calculate.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
                try {
                  Date sd = formatter.parse(txtstartTime.getText());
                  Date ed = formatter.parse(txtendTime.getText());
                  Date diff = new Date( ed.getTime()-sd.getTime()+ 28800000 );
                  System.out.println( resformat.format(diff) );
                } catch( Exception ex ) {
                  System.out.println( ex );
                }
          }
        });
  }

}


0
 

Author Comment

by:CG
ID: 1228438
gadio:
Thanks again for your help! I tested your code. Here is a problem:
When I entered Start Time 10:30:10, and End Time 12:50:10, I got the
result 05:20:00 (should be 02:20:00). The result should be set to TextField
elapsedTime. Could you please help me to fix it?
I'm looking forward to receiving your answer soon.
0
 
LVL 6

Accepted Solution

by:
gadio earned 60 total points
ID: 1228439
Oh. There are problems with the time zone I think. use the following: replace the last try block with:

                try {
                  Date sd = formatter.parse(txtstartTime.getText());
                  Date ed = formatter.parse(txtendTime.getText());
                  long diff = ed.getTime()-sd.getTime();
                  diff /=1000;
                  long seconds = diff % 60;
                  diff /= 60;
                  long min = diff % 60;
                  diff /= 60;
                  long hours = diff;
                  System.out.println( (hours<10?"0":"")+hours+":"+(min<10?"0":"")+min+":"+(seconds<10?"0":"")+seconds );
                } catch( Exception ex ) {
                  System.out.println( ex );
                }

0
 

Author Comment

by:CG
ID: 1228440
Thanks, gadio. You are terrific!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Systems talking to each other 5 126
maven example error 3 53
hibernate insert example 13 15
type mismatch (Object[] to double[] 4 13
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now