Obtaining a Unix Timestamp in Go Language (current time in seconds since epoch)

UnixTimestampGo

Unix Problem Overview


I have some code written in Go which I am trying to update to work with the latest weekly builds. (It was last built under r60). Everything is now working except for the following bit:

 if t, _, err := os.Time(); err == nil {
   port[5] = int32(t)
 }

Any advice on how to update this to work with the current Go implementation?

Unix Solutions


Solution 1 - Unix

import "time"
...
port[5] = time.Now().Unix()

Solution 2 - Unix

If you want it as string just convert it via strconv:

package main

import (
	"fmt"
	"strconv"
	"time"
)

func main() {
	timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	fmt.Println(timestamp) // prints: 1436773875771421417
}

Solution 3 - Unix

Another tip. time.Now().UnixNano()(godoc) will give you nanoseconds since the epoch. It's not strictly Unix time, but it gives you sub second precision using the same epoch, which can be handy.

Edit: Changed to match current golang api

Solution 4 - Unix

Building on the idea from another answer here, to get a human-readable interpretation, you can use:

package main

import (
    "fmt"
    "time"
)

func main() {
    timestamp := time.Unix(time.Now().Unix(), 0)
    fmt.Printf("%v", timestamp) // prints: 2009-11-10 23:00:00 +0000 UTC
}

Try it in The Go Playground.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncrcView Question on Stackoverflow
Solution 1 - Unixuser811773View Answer on Stackoverflow
Solution 2 - UnixFatih ArslanView Answer on Stackoverflow
Solution 3 - UnixNateView Answer on Stackoverflow
Solution 4 - UnixivanbgdView Answer on Stackoverflow