Time since golang nanosecond timestamp

go, time

Solution

In Go a "time" object is represented by a value of the struct type `time.Time`.

You can create a `Time` from a nanosecond timestamp using the `time.Unix(sec int64, nsec int64)` function where it is valid to pass `nsec` outside the range `[0, 999999999]`.

And you can use the `time.Since(t Time)` function which returns the elapsed time since the specified time as a `time.Duration` (which is basically the time difference in nanoseconds).

t := time.Unix(0, yourTimestamp)
elapsed := time.Since(t)

To get the elapsed time in hours, simply use the `Duration.Hours()` method which returns the duration in hours as a floating point number:

fmt.Printf("Elapsed time: %.2f hours", elapsed.Hours())

Try it on the Go Playground.

Note:

`Duration` can format itself intelligently in a format like `"72h3m0.5s"`, implemented in its `String()` method:

fmt.Printf("Elapsed time: %s", elapsed)

Problem

Q1. How do I create a golang time struct from a nanosecond timestamp? Q2. How do I then compute the number of hours since this timestamp?

Original source