web-dev-qa-db-fra.com

Comment obtenir l'horodatage actuel dans Go?

Quel est le meilleur moyen d'obtenir l'horodatage actuel dans Go et de le convertir en chaîne? J'ai besoin de la date et de l'heure, par exemple. Format AAAAMMJJhhmmss.

113
brianoh

Utilisez la fonction time.Now() et la méthode time.Format() .

t := time.Now()
fmt.Println(t.Format("20060102150405"))

affiche 20110504111515, ou du moins l'a fait il y a quelques minutes. (Je suis à l'heure avancée de l'Est.) Il existe plusieurs formats d'heure prédéfinis dans constantes définis dans le package d'heures.

Vous pouvez utiliser time.Now().UTC() si vous préférez utiliser l'heure UTC plutôt que votre fuseau horaire local.

131
nmichaels

Toutes les autres réponses manquent beaucoup pour quelqu'un qui vient de Google et qui cherche un "timestamp in go"! YYYYMMDDhhmmss n'est pas un "horodatage".

Pour obtenir le "timestamp" d'une date à la volée (nombre de secondes à partir de janvier 1970), la fonction correcte est . Unix () , et elle renvoie réellement un entier

62
Bactisme

Pour des raisons de lisibilité, il est préférable d’utiliser les constantes RFC dans le paquet de temps (me pense)

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}
51
matthewmcneely

Utilisez les fonctions time.Now () et time.Format () (comme time.LocalTime () n'existe plus à partir de Go 1.0.3).

t := time.Now()
fmt.Println(t.Format("20060102150405"))

démo en ligne (avec la date fixée dans le passé dans la cour, tant pis)

32
Deleplace

En écho à la réponse de @ Bactisme, la méthode de récupération de l'horodatage actuel (en millisecondes, par exemple) est la suivante:

msec := time.Now().UnixNano() / 1000000

Ressource: https://gobyexample.com/Epoch

2
Jack Ryan