128 votes

Obtention d'un horodatage Unix en langue Go (temps actuel en secondes depuis l'époque)

J'ai du code écrit en Go que j'essaie 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 à l'exception du bit suivant :

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

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

55voto

Fatih Arslan Points 2759

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
}

19voto

Nate Points 1639

Une autre astuce. time.Now().UnixNano() (godoc) vous donnera des nanosecondes depuis l'époque. Ce n'est pas strictement du 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'api golang actuelle

1voto

ivanbgd Points 111

En s'appuyant sur l'idée d'une autre réponse ici, pour obtenir une interprétation lisible par l'homme, vous pouvez utiliser :

 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
}

Essayez-le dans The Go Playground .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X