user3440443 user3440443 - 2 months ago 15
Java Question

Displaying time elapsed since epoch

I am working on creating a time app that calculates both the current time and the time elapsed since midnight, January 1, 1970, in milliseconds. I went ahead and used Calendar and was able to successfully return the current time but for some reason the elapsed time returns 0. Not sure why that would be.

Here is my current code:

import java.util.Calendar;
import java.util.TimeZone;

public class TimeApp {
public static void main(String[] args) {
Time time1 = new Time();
System.out.println("Hour: " + time1.getHour() + " Minute: " +
time1.getMinute() + " Second: " + time1.getSecond());

Time time2 = new Time();
System.out.println("Elapsed time since epoch: " + time2.getElapsedTime());
}
}

final class Time {
private int hour;
private int minute;
private int second;
private long secondsSinceEpoch;

public Time() {
Calendar calendar = Calendar.getInstance();
this.second = calendar.get(Calendar.SECOND);
this.minute = calendar.get(Calendar.MINUTE);
this.hour = calendar.get(Calendar.HOUR_OF_DAY);
}

public Time(long elapsedTime) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();
calendar.set(2016, Calendar.SEPTEMBER, 9);
secondsSinceEpoch = calendar.getTimeInMillis() / 1000L;
}

@Override
public String toString() {
return hour + ":" + minute + ":" + second;
}

public int getHour() {
return hour;
}

public int getMinute() {
return minute;
}

public int getSecond() {
return second;
}

public long getElapsedTime() {
return secondsSinceEpoch;
}
}

Answer

You aren't setting elapsedTime for time2. I think you wanted

Time time2 = new Time(System.currentTimeMillis());