[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

A program to calculate the elapsed time

Posted on 1998-07-27
8
Medium Priority
?
376 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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
 
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 240 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

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

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

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 the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
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:
Suggested Courses

649 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