web-dev-qa-db-fra.com

Obtention d'un horodatage Unix en langue Go (temps actuel en secondes depuis Epoch)

J'ai du code écrit dans Go que j'essaye de mettre à jour pour fonctionner avec les dernières versions hebdomadaires. (Il a été construit pour la dernière fois sous R60). Tout fonctionne maintenant sauf le bit suivant:

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

Des conseils sur la façon de mettre à jour cela pour fonctionner avec l'implémentation actuelle de Go?

69
crc
import "time"
...
port[5] = int32(time.Now().Unix())
139
user811773

Si vous le voulez comme string, convertissez-le simplement via strconv:

package main

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

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

Un autre conseil. time.Now().UnixNano()(godoc) vous donnera des nanosecondes depuis l'époque. Ce n'est pas strictement un temps Unix, mais cela vous donne une précision inférieure à la seconde en utilisant la même époque, ce qui peut être pratique.

Edit: modifié pour correspondre à l'actuel golang api

12
Nate