Epoch in Minitab

A common requirement in programs is getting the number of seconds, milliseconds, or nanoseconds since the Unix epoch. Here’s how to do it in Java.

import java.time.Instant;

public class Epoch {
    public static void main(String[] args) {
        // Use Instant.now() to get the current time
        Instant now = Instant.now();
        System.out.println(now);

        // Get elapsed time since the Unix epoch in seconds,
        // milliseconds or nanoseconds
        System.out.println(now.getEpochSecond());
        System.out.println(now.toEpochMilli());
        System.out.println(now.getNano());

        // You can also convert integer seconds or nanoseconds
        // since the epoch into the corresponding Instant
        System.out.println(Instant.ofEpochSecond(now.getEpochSecond()));
        System.out.println(Instant.ofEpochSecond(0, now.getNano()));
    }
}

To run the program:

$ javac Epoch.java
$ java Epoch
2023-05-20T12:34:56.789Z
1684586096
1684586096789
789000000
2023-05-20T12:34:56Z
1970-01-01T00:00:00.789Z

In Java, we use the Instant class from the java.time package to work with time instants on the timeline. The Instant.now() method gives us the current instant.

We can then use methods like getEpochSecond(), toEpochMilli(), and getNano() to get the time in different units since the Unix epoch.

To convert from epoch seconds or nanoseconds back to an Instant, we use the Instant.ofEpochSecond() method, which has overloads for both seconds and nanoseconds.

Next, we’ll look at another time-related task: time parsing and formatting.