147 votes

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

Quelle est la meilleure façon d'obtenir l'horodatage actuel dans Go et de le convertir en chaîne de caractères ? J'ai besoin de la date et de l'heure au format YYYYMMDDhhmmss.

1 votes

C'est tout ce dont vous avez besoin golangprogrammes.com/

162voto

nmichaels Points 21955

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

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

imprime 20110504111515 (Je suis à l'heure d'été de l'Est). Il y a plusieurs formats d'heure prédéfinis dans l'application constantes définis dans le paquet horaire.

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

18 votes

J'aime vraiment le Kitchen constante ( = "3:04PM" )

7 votes

Merci pour cette information. Comment le paquet de temps sait-il que nous passons "20060102150405", car ce n'est pas une des constantes prédéfinies dans le paquet de temps ? Quelle est la signification de cette date et de cette heure dans le paquetage temporel (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 commettons pas d'erreur en le codant. Je suppose qu'ils n'ont pas jugé bon de fournir une constante pour ce format, et de faire correspondre le modèle de chaîne.

11 votes

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

78voto

OJFord Points 151

Toutes les autres réponses sont très mal interprétées pour quelqu'un qui vient de Google et qui cherche "timestamp in go" ! AAAAMMJJhhmmss n'est pas un "timestamp".

Pour obtenir le "timestamp" d'une date en go (nombre de secondes à partir de janvier 1970), la fonction correcte est la suivante .Unix() et il retourne réellement un nombre entier

65voto

user2774264 Points 41

Pour la lisibilité, il est préférable d'utiliser les constantes RFC dans le paquet de temps (je pense).

import "fmt" 
import "time"

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

4 votes

Comment cela produit-il YYYMMDDhhmmss ?

2 votes

Le RFC850 produit Tuesday, 10-Nov-09 23:00:00 UTC RFC3339 = "2006-01-02T15:04:05Z07:00" play.golang.org/p/XmobwWSz5pN golang.org/pkg/time

0 votes

Je préfère personnellement : time.Now().Format(time.RFC3339) et un échantillon de sortie : 2021-08-19T13:52:51+03:00

36voto

Ripounet Points 1099

Utilisez le time.Now() y time.Format() (car time.LocalTime() n'existe plus depuis Go 1.0.3).

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

Démonstration en ligne (avec date fixée dans le passé dans la cour de récréation, peu importe)

7 votes

Et vous pouvez l'utiliser simplement comme une chaîne de caractères comme ceci : s := "Actual time is: "+time.Now().String()

10voto

Tyson Points 3583

Encore plus facile :

strconv.FormatInt(time.Now().Unix(), 10)

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