Obtenir l'heure actuelle sous forme de chaîne formatée dans Go?
131
Quelle est la meilleure façon d'obtenir l'horodatage actuel dans Go et de la convertir en chaîne? J'ai besoin de la date et de l'heure par exemple. Format AAAAMMJJhhmmss.
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.
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
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
56
Pour la lisibilité, il est préférable d'utiliser les constantes RFC dans le package de temps (je pense)
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
Réponses:
Utilisez la
time.Now()
fonction et latime.Format()
méthode.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.la source
Kitchen
constante (= "3:04PM"
)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
la source
Get current time as formatted string in Go?
. J'espère que quelqu'un l'approuvera.Pour la lisibilité, il est préférable d'utiliser les constantes RFC dans le package de temps (je pense)
la source
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeUtilisez les fonctions time.Now () et time.Format () (car time.LocalTime () n'existe plus depuis Go 1.0.3)
Démo en ligne (avec date fixée dans le passé dans le terrain de jeu, peu importe)
la source
s := "Actual time is: "+time.Now().String()
Trouvez plus d'informations dans cet article: Obtenez la date et l'heure actuelles dans différents formats en golang
Voici un avant-goût des différents formats que vous trouverez dans l'article précédent:
la source
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:
Ressource: https://gobyexample.com/epoch
la source
https://golang.org/src/time/format.go spécifié Pour l'analyse, le temps
15
est utilisé pour les heures,04
est utilisé pour les minutes,05
pour les secondes.Pour l' analyse syntaxique date
11
,Jan
,January
est depuis des mois,02
,Mon
,Monday
pour le jour du mois,2006
pour l' année et bien sûrMST
pour la zoneMais vous pouvez également utiliser cette disposition, que je trouve très simple.
"Mon Jan 2 15:04:05 MST 2006"
DEMO
la source
Pour répondre à la question exacte:
la source