Obtenir l'heure actuelle sous forme de chaîne formatée dans Go?


Réponses:


149

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

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

imprime 20110504111515, ou du moins il 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 les constantes définies dans le package horaire.

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


15
J'aime vraiment la Kitchenconstante ( = "3:04PM")
tux21b

5
Merci pour cette information. Comment le package de temps sait-il, après avoir passé "20060102150405", ce que nous passons, car ce n'est pas l'une des constantes prédéfinies dans le package de temps? Quelle est la signification de cette date et de cette heure dans le package horaire (20060102150405)? Cela me semble un peu bizarre, mais tant que cela fonctionne, je suppose que cela n'a pas d'importance tant que nous ne faisons pas d'erreur lors du codage. Je suppose qu'ils n'ont pas jugé bon de fournir une constante pour ce format et de correspondre au modèle de chaîne.
brianoh

9
@brianoh: Voir golang.org/pkg/time/#Constants C'est l'heure "01/02 03:04:05 PM '06 -0700" Parce que chaque composant a un numéro différent (1, 2, 3, etc.), il peut déterminer à partir des nombres quels composants vous voulez.
newacct

1
Veuillez noter que time.LocalTime () n'existe plus: voir ma réponse ci-dessous pour être compatible avec Go 1.0.3
Deleplace

71

Toutes les autres réponses sont très mal dirigées pour quelqu'un venant de Google et recherchant "horodatage en cours"! AAAAMMJJhhmmss n'est pas un "horodatage".

Pour obtenir le "timestamp" d'une date in go (nombre de secondes à partir de janvier 1970), la fonction correcte est .Unix () , et elle renvoie vraiment un entier


8
Je suis d'accord; la question doit être intitulée «date actuelle» et non «horodatage actuel»
developerbmw

1
Bien qu'il soit tard, je pense que .Unix () devrait pointer vers golang.org/pkg/time/#Time.Unix dont le type de retour est int64.
bornfree le

Bien que vous ayez techniquement raison, je pense que de nombreux codeurs de nos jours confondent l'horodatage avec «l'heure actuelle d'une manière ou d'une autre formatée», de sorte que ce titre serait tout aussi déroutant pour la plupart.
Roger Hill

J'ai suggéré une modification - Get current time as formatted string in Go?. J'espère que quelqu'un l'approuvera.
akki


33

Utilisez les fonctions time.Now () et time.Format () (car time.LocalTime () n'existe plus depuis Go 1.0.3)

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

Démo en ligne (avec date fixée dans le passé dans le terrain de jeu, peu importe)


6
Et vous pouvez l'utiliser simplement comme une chaîne comme celle-ci:s := "Actual time is: "+time.Now().String()
Michael


2

En écho à la réponse de @ Bactisme, la façon dont on procéderait pour récupérer l'horodatage actuel (en millisecondes, par exemple) est:

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

Ressource: https://gobyexample.com/epoch


0

https://golang.org/src/time/format.go spécifié Pour l'analyse, le temps 15est utilisé pour les heures, 04est utilisé pour les minutes, 05pour les secondes.

Pour l' analyse syntaxique date 11, Jan, Januaryest depuis des mois, 02, Mon, Mondaypour le jour du mois, 2006pour l' année et bien sûr MSTpour la zone

Mais vous pouvez également utiliser cette disposition, que je trouve très simple. "Mon Jan 2 15:04:05 MST 2006"

    const layout = "Mon Jan 2 15:04:05 MST 2006"
    userTimeString := "Fri Dec 6 13:05:05 CET 2019"

    t, _ := time.Parse(layout, userTimeString)
    fmt.Println("Server: ", t.Format(time.RFC850))
    //Server:  Friday, 06-Dec-19 13:05:05 CET

    mumbai, _ := time.LoadLocation("Asia/Kolkata")
    mumbaiTime := t.In(mumbai)
    fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
    //Mumbai:  Friday, 06-Dec-19 18:35:05 IST

DEMO


-4

Pour répondre à la question exacte:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

Merci Suran, cela est utile lorsque l'horodatage doit être envoyé via GRPC
rajeshk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.