diff --git a/a1/src/edu/wmich/cs3310/a1/ComputeTime.java b/a1/src/edu/wmich/cs3310/a1/ComputeTime.java
new file mode 100644
index 0000000000000000000000000000000000000000..c9b921f210395434a63909031eea13038d63b111
--- /dev/null
+++ b/a1/src/edu/wmich/cs3310/a1/ComputeTime.java
@@ -0,0 +1,78 @@
+package edu.wmich.cs3310.a1;
+
+
+import java.util.Date;
+
+
+/**
+ * Calculates differences between two times.
+ */
+public class ComputeTime {
+
+    //region Variables
+
+    private long startMilliseconds;
+    private long endMilliseconds;
+    private long differenceMilliseconds;
+
+    //endregion Variables
+
+
+
+    //region Constructor
+
+    /**
+     * Base constructor.
+     */
+    public ComputeTime() {
+
+    }
+
+    //endregion Constructor
+
+
+
+    //region Methods
+
+    /**
+     * Determines the difference in milliseconds between two times.
+     * @param time1 Start time.
+     * @param time2 End time.
+     * @return Long of Milisecond difference.
+     *          Positive means time1 is earlier than time2.
+     *          Zero means they're equal.
+     *          Negative means time2 is earlier than time1.
+     */
+    public long ComputeDateDifference(Date time1, Date time2) {
+        startMilliseconds = time1.getTime();
+        endMilliseconds = time2.getTime();
+        differenceMilliseconds = endMilliseconds - startMilliseconds;
+        //PrintTime(differenceMilliseconds);
+        return  differenceMilliseconds;
+    }
+
+
+    /**
+     * Calculates hours, minutes, seconds, and milliseconds based upon total milliseconds.
+     * Prints to stdout.
+     * @param timeInMilliseconds Long that represents milliseconds passed.
+     */
+    public void PrintTime(long timeInMilliseconds) {
+        long miliseconds;
+        long seconds;
+        long minutes;
+        long hours;
+
+        miliseconds = timeInMilliseconds % 1000;
+        seconds = timeInMilliseconds / 1000;
+        minutes = seconds / 60;
+        seconds = seconds % 60;
+        hours = minutes / 60;
+        minutes = minutes % 60;
+
+        System.out.println(//"H:M:S:m  " +
+                            hours + ":" + minutes + ":" + seconds + ":" + miliseconds);
+    }
+
+    //endregion Methods
+}
diff --git a/a1/tests/ComputeTimeTests.java b/a1/tests/ComputeTimeTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc21ebe4010b5014480632a1d85fcdb6437ad1ce
--- /dev/null
+++ b/a1/tests/ComputeTimeTests.java
@@ -0,0 +1,131 @@
+
+import java.util.Calendar;
+import java.util.Date;
+import org.junit.Before;
+import org.junit.Assert;
+import org.junit.Test;
+
+import edu.wmich.cs3310.a1.ComputeTime;
+
+
+/**
+ * Tests for ComputeTime class.
+ */
+public class ComputeTimeTests {
+
+    //region Variables
+
+    long result;
+    Date date1;
+    Date date2;
+    ComputeTime computeTime;
+    Calendar calendar;
+
+    //endregion Variables
+
+
+
+    //region Tests
+
+    @Before
+    public void SetUp() {
+        computeTime = new ComputeTime();
+        date1 = new Date();
+        calendar = Calendar.getInstance();
+    }
+
+
+    @Test
+    public void TestEqualDate() {
+        date2 = date1;
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(0, result);
+    }
+
+    @Test
+    public void TestMillisecondDifference() {
+        // Date1 earlier than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.MILLISECOND, 1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals((1), result);
+
+        // Date1 later than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.MILLISECOND, -1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(-1, result);
+    }
+
+    @Test
+    public void TestSecondDifference() {
+        // Date1 earlier than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.SECOND, 1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(1000, result);
+
+        // Date1 later than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.SECOND, -1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(-1000, result);
+    }
+
+    @Test
+    public void TestMinuteDifference() {
+        // Date1 earlier than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.MINUTE, 1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals((60 * 1000), result);
+
+        // Date1 later than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.MINUTE, -1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(-(60 * 1000), result);
+    }
+
+    @Test
+    public void TestHourDifference() {
+        // Date1 earlier than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.HOUR, 1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals((60 * 60 * 1000), result);
+
+        // Date1 later than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.HOUR, -1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(-(60 * 60 * 1000), result);
+    }
+
+    @Test
+    public void TestDayDifference() {
+        // Date1 earlier than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.DAY_OF_MONTH, 1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals((24 * 60 * 60 * 1000), result);
+
+        // Date1 later than date2.
+        calendar.setTime(date1);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+        date2 = calendar.getTime();
+        result = computeTime.ComputeDateDifference(date1, date2);
+        Assert.assertEquals(-(24 * 60 * 60 * 1000), result);
+    }
+
+    //endregion Tests
+}