Epoch in Squirrel

Here’s the translated code and explanation in Markdown format suitable for Hugo:

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-17T12:34:56.789012345Z
1684326896
1684326896789
789012345
2023-05-17T12:34:56Z
1970-01-01T00:00:00.789012345Z

In Java, we use the Instant class from the java.time package to work with moments in time. The Instant.now() method gives us the current time, which we can then use to get the number of seconds, milliseconds, or nanoseconds since the Unix epoch.

The getEpochSecond() method returns the number of seconds since the epoch, toEpochMilli() returns milliseconds, and getNano() returns the nanosecond adjustment to the second.

We can also create an Instant from a given number of seconds (and optionally, nanoseconds) since the epoch using Instant.ofEpochSecond().

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